Подтвердить что ты не робот

Статический контент gzip

Экспресс и соединение, похоже, удалили свои функции gzip, потому что они были слишком неэффективны. Есть ли надежные решения для gzip с express-js в настоящее время?

4b9b3361

Ответ 1

Connect 2.0 добавила поддержку compress() промежуточное программное обеспечение, основанное на новом zlib-материале, которое только что появилось в Node Core API.

Вы можете использовать это на своем экспресс-сервере, добавив зависимость для подключения 2.0 в файле package.json:

{
    ...
    dependencies: {
        "connect" : "2.x",
        "express" : "2.x",
        // etc..
    }
}

И затем примените следующую логику к конфигурации вашего экспресс-приложения:

// Create static file server with gzip support
var app = express.createServer(express.logger());
app.use(connect.compress());
app.use(express.static(__dirname + '/public'));
app.listen(80);

Обратите внимание, что этот материал все еще довольно новый, и пока я мог заставить его работать локально, Herokuприложение > cloud жаловалось на зависимость от Compress 2.x во время захвата при фиксации при развертывании через git:

-----> Heroku receiving push
-----> Node.js app detected
-----> Resolving engine versions
       Using Node.js version: 0.4.7
       Using npm version: 1.0.106
-----> Fetching Node.js binaries
-----> Vendoring node into slug
-----> Installing dependencies with npm
       npm ERR! Error: No compatible version found: [email protected]'>=2.0.0- <3.0.0-'

Как вы можете видеть, они все еще используют старую версию Node (0.4.7).


UPDATE:

Собственно, я мог бы заставить Heroku развернуть это, добавив соответствующий раздел engines в package.json:

{
    ...
    "engines": {
        "node": ">= 0.6.0 < 0.7.0"
    }
}

И это результаты при использовании HTTP-тестера сжатия:

enter image description here

ОБНОВЛЕНИЕ Июнь 2014

Хия, если вы читаете это сейчас. Не забывайте, что вышеизложенное относится только к Express 2.0.

Экспресс 3.0 и 4.0 используют другой синтаксис для включения сжатия HTTP, см. сообщение на бензине чуть ниже.

Ответ 2

У Express 3.0 теперь есть поддержка compress():

var app = express();
// gzip
app.use(express.compress());
// static
app.use("/public", express.static(__dirname + '/public'));
// listen
app.listen(80);

ИЗМЕНИТЬ для Express 4.0 сжатие становится отдельным промежуточным программным обеспечением. Поэтому вам нужно установить и импортировать его, чтобы использовать его:

var compress = require('compression');
app.use(compress()); 

Ответ 3

Я также искал npm и нашел, например:

  • https://github.com/tomgallacher/gzippo

    gzippo произносится g-zippo - это gzip промежуточное ПО для подключения через Compress для лучшей производительности.

Недавно был разработан Gzippo (2 дня назад), который, я думаю, хорош. Я не могу рассказать вам об использовании продукции. Вы должны сами проверить/сравнить его. Я также, вероятно, использовал бы CDN для живого сайта или Nginx для размещения своих статических файлов вместо некоторого модуля nodejs.

Ответ 4

Connect будет поддерживать новый материал zlib в Node в следующей версии

Ответ 5

Если вы искали номер npm, возможно, вы встретили node-compress.

Не должно быть слишком сложно вводить его в качестве промежуточного программного обеспечения в экспресс.