Экспресс и соединение, похоже, удалили свои функции gzip, потому что они были слишком неэффективны. Есть ли надежные решения для gzip с express-js в настоящее время?
Статический контент gzip
Ответ 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-тестера сжатия:
ОБНОВЛЕНИЕ Июнь 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.
Не должно быть слишком сложно вводить его в качестве промежуточного программного обеспечения в экспресс.