Вход Регистрация
Nginx: Включаем gzip-сжатие (оценка: 0)
Сейчас достаточно популярны мобильные устройства, но, мобильный интернет по прежнему отстаёт от проводного как по скорости, так и по цене (особенно в роуминге). Поэтому, это, в первую очередь, забота о пользователях.

Но надо сказать, что тут есть и проблемы: некоторые старые или другие особо выдающиеся браузеры не поддерживают gzip-сжатие. Но нам повезло, эта проблема волнует достаточно многих, поэтому для её решения особо заморачиваться не придётся.

К делу, открываем конфиг nginx (/etc/nginx/nginx.conf) и или вписываем, или раскомменчиваем следующие строки:

  1. http {
  2. <...>
  3. ##
  4. # Gzip Settings
  5. ##
  6. gzip on;
  7. gzip_disable "msie6";
  8. gzip_vary on;
  9. gzip_proxied any;
  10. gzip_comp_level 6;
  11. gzip_buffers 16 8k;
  12. gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
  13. }

Здесь мы включаем сжатие в контексте "http" (первая строка), но можно делать и в других контекстах: "server", "location", "if in location".

Теперь небольшие пояснения:

gzip on - включает поддержку gzip в целом;
gzip_disable "msie6" - отключает сжатие для эксплорера 5.5 и 6, т.к. не поддерживается;
gzip_buffers - устанавливает размер буффера, в котором хранится сжатая информация;
gzip_complevel - уровень сжатия, 1 - минимальное, 9 - максимальное;
gzip_proxied any - сжимать данные ответов для proxy-серверов;
gzip_types - MIME-types ответов, которые должны быть сжаты;
gzip_vary on - включает добавление в ответ заголовка "Vary: Accept-Encoding", для IE 4-6 это приведёт к некешированию данных из-за бага.
После редактирования не забываем перезагрузить сервер. Например, командой:
sudo service nginx restart

И проверить что данные действительно сжимаются. Это можно сделать посмотрев заголовок ContentEncoding через firebug, chrome dev tools или, например, так:
$ curl http://ваш_сайт.ру/ -I --compressed | grep Content-Encoding
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Content-Encoding: gzip

Этот способ включит сжатие данных "на лету" - т.е. во время формирования ответа, что должно увеличить нагрузку на CPU и использование памяти сервера, однако, снизить количество траффика. Если у вас много статических данных, которые вы бы не хотели сжимать на лету, то можно использовать модуль HttpGzipStaticModule для прекомпрессии да
Автор: * -=(C)DRU987=- (Dev) / 27.01.2016 в 21:40
Просмотров: 843
ТОП блогов | поиск | все блоги
Онлайн: 2
Реклама