Технология сжатия трафика не является новой, однако не теряет свою актуальность и по сегодняшний день. Сегодня практически каждый браузер умеет работать со сжатым контентом, по той причине, что возможность сжатия является частью протокола HTTP 1.1. Как известно сжатие позволяет оптимизировать размеры статичных файлов, таких как CSS, JavaScript, HTML и других текстовых файлов. Оптимизация размера файлов может достигать до 70%. Это довольно существенный объём в вопросе оптимизации, особенно если это касается hightload-проектов.
Принцип работы сжатия очень прост. Традиционным образом на сервере располагаются исходные статичные файлы, которые должны отдаваться в браузер пользователя по запросу. При использовании сжатия, сервер сжимает данные, тем самым оптимизируя их размер. После получения файлов, браузер выполняет распаковку и показ конечному пользователю. Весь процесс сжатия и распаковки занимает минимальное время, которое пользователь едва ли может заметить. Однако в случае колоссальным трафиком на сервер, увеличивается пропускная способность канала связи, за счёт уменьшения объема передаваемых данных по каналу.
Перед настройкой сжатия нужно определиться с типами, файлов, которые следует сжимать сервером. В большинстве случаев сжимать следует файлы: HTML, XML, CSS, JavaScript, TXT, а также другие текстовые файлы. После этого в настройках конфигурации сервера в Nginx следует включить GZip:
server { .... gzip on; gzip_disable "msie6"; gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript; }
Стоит понимать, что сжатие файлов так же занимает некоторое процессорное время сервера. По этой причине для оптимизации нагрузки на процессор сервера следует настроить оптимальное значение уровня сжатия.
Gzip для сжатия данных может использовать несколько уровней. От быстрого сжатия – менее эффективного, до более ресурсоёмкого в плане процессора – но и более существенного сжатия. Для этого можно задать значение от 1 до 9:
gzip_comp_level 5;
1 – это максимально быстрый уровень сжатия, 9 – максимально эффективный уровень сжатия, но требует больше ресурсов от процессора. Оптимальное значение среднее, (в нашем примере 5). Далее в зависимости от ситуации можно выставлять более подходящее значение. Тут уже всё зависит от запаса процессорной мощности вашего веб-сервера.
Не всегда удобно либо вовсе нет возможности правки настроек конфигурации сервера на хостинге. В таком случае, если у вас так же используется на хосте Apache в качестве веб-сервера, то можно прописать сжатие так же в файле .htaccess.
AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/x-javascript
Для работы этого метода так следует убедиться, что в Apache используется модуль mod_deflate. Если у вас есть доступ к файлам конфигурации сервера Apache, то настроить сжатие трафика посредством GZip можно и в конфигурации самого сервера.