nodejs expressjs gzip содержимое json

Я использую express 'res.end и т. Д., Чтобы использовать json как часть моего rest api.

Google Pagespeed говорит мне сжать его.

Однако согласно этой теме:

http://groups.google.com/group/express-js/browse_thread/thread/db1ad3307cb4f504/64f02170f616527c

это не кажется хорошей идеей. В конце концов, этот контент динамический и не кэшируемый, поэтому сжатие перед каждым запросом не похоже на чистую выгоду.

Я прав? Или мне следует использовать gzip, спасибо.

Для ясности: статический контент (css, js) уже заархивирован.


person Harry    schedule 10.09.2011    source источник


Ответы (1)


Gzip может существенно повлиять на производительность вашего сайта, особенно при медленных / мобильных соединениях, поскольку он уменьшает объем данных (и количество пакетов), которые браузер должен получить.

Я не знаю о конкретной реализации в Express, но использование Gzip - это компромисс между временем процессора сервера и пропускной способностью. Вы потребляете (немного) больше ЦП на сервере для сжатия вашего контента, но вы уменьшаете использование полосы пропускания, время загрузки страницы и количество времени, которое ваш веб-сервер должен держать сокет открытым при отправке данных в браузер. Каждое практическое руководство и программное обеспечение для анализа скорости страницы (такое как Google Page Speed, Web Page Test и т. Д.) Настоятельно рекомендует использовать Gzip, поэтому я полагаю, что усилия того стоят.

Что касается того, как добиться этого в Express, я лично использую Nginx для проксирования всех запросов к моему приложению Express (и обслуживания статического контента), поэтому я просто настроил Nginx на gzip HTML, CSS, Javascript и некоторые другие типы ресурсов, прежде чем отправлять их в клиент.

Некоторые ссылки:

person MartinodF    schedule 10.09.2011
comment
Вы используете gzip перед каждым запросом? - person Harry; 10.09.2011
comment
Да, каждая страница сжимается в реальном времени перед отправкой обратно клиенту (и это то, что делает почти каждый сайт с включенным Gzip). Если у меня есть статические ресурсы, которые не будут меняться в течение некоторого времени, я обычно предварительно сжимаю их на диске и поручаю Nginx отправить версию .gz, если браузер поддерживает ее. - person MartinodF; 10.09.2011
comment
Некоторые реализации веб-gzip будут иметь некоторые параметры для сжатия только текстовых форматов - text / plain, text / html, application / json, application / xml - и только если полезная нагрузка превышает минимальный размер (например, 1 КБ или что-то в этом роде). Это позволяет избежать сжатия файлов, которые плохо сжимаются. Я также видел случаи, когда он отправлял несжатую версию, если после сжатия файл не был меньше. - person Dobes Vandermeer; 05.11.2011