5.0 KiB
aliases | tags | date | zero-link | parents | linked | link | ||||
---|---|---|---|---|---|---|---|---|---|---|
|
|
|
https://struchkov.dev/blog/ru/nginx-optimization/#%D1%81%D0%B6%D0%B0%D1%82%D0%B8%D0%B5-gzip |
Один из самых эффективных методов ускорить ответ от вашего веб-сервера nginx - это включить gzip сжатие. gzip обеспечивает сжатие без потерь, иными словами, исходные данные можно полностью восстановить при распаковке. Он основан на алгоритме DEFLATE, который использует комбинацию алгоритма LZ77 и алгоритма Хаффмана.
Большинство клиентов и серверов поддерживают gzip. Когда gzip-совместимый клиент/веб-браузер запрашивает ресурс у сервера с поддержкой Gzip, сервер сжимает ответ перед отправкой обратно клиенту.
Общая конфигурация Gzip-сжатия может выглядеть следующим образом. Откройте основной файл конфигурации /etc/nginx/nginx.conf
и добавьте следующие директивы в блок server.
http {
...
gzip on;
gzip_min_length 500;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xml+rss application/json;
gzip_disable "msie6";
gzip_comp_level 6;
gzip_buffers 16 8k;
...
}
gzip
включает сжатие.
gzip_min_length
устанавливает минимальную длину ответов, для которых будет применяться сжатие. По умолчанию 20, но имеет смысл поставить больше, так как постоянное сжатие приводит к повышению нагрузки на процессоры сервера и клиента.
gzip_vary
- позволяет кэшировать как сжатые, так и обычные версии ресурса.
gzip_proxied
Разрешает или запрещает сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа. То, что запрос проксированный, определяется на основании наличия поля “Via” в заголовке запроса. В директиве можно указать одновременно несколько параметров.
[!NOTE]- Параметры
gzip_proxied
off
запрещает сжатие для всех проксированных запросов, игнорируя остальные параметры;expired
разрешает сжатие, если в заголовке ответа есть поле “Expires” со значением, запрещающим кэширование;no-cache
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “no-cache
”;no-store
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “no-store
”;private
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “private
”;no_last_modified
разрешает сжатие, если в заголовке ответа нет поля “Last-Modified”;no_etag
разрешает сжатие, если в заголовке ответа нет поля “ETag”;auth
разрешает сжатие, если в заголовке запроса есть поле “Authorization”;any
разрешает сжатие для всех проксированных запросов.
gzip_types
по умолчанию включено сжатие для ответов типа текст. В данном параметре можно перечислить все необходимые типы ответов.
gzip_disable
запрещает для перечисленных параметров заголовка User-Agent сжатие. В данном примере для Internet Explorer 6 сжатие применяться не будет, так как данный браузер не умеет принимать сжатые ответы.