Ранее я написал о том как настроить nginx для работы с WP Super Cache, что позволило существенно снизить нагрузку на сервер. Кроме того для ускорения передачи данных клиентам используется сжатие страниц gzip. Проблема в том, что при каждом запросе сервер берет страницу в кеше, сжимает ее, отдает клиенту. Логично хранить в кеше уже сжатую страницу и избавить nginx от лишней работы.

Поможет нам в этом модуль ngx_http_gzip_static, который к сожалению не включен в стандартную компиляцию и для его работы нужно пересобрать nginx  с параметром

Select Code
--with-http_gzip_static_module

Логика работы этого модуля простая — если запрашивается файл (<имя файла>), то проверяется наличие <имя файла>.gz и если он есть, то отдается сжатый файл. Следует помнить о холостых проверках на наличие сжатой версии и желательно создать такие для статических файлов (стилей, скриптов).

 Следующая проблема — поддержание актуальности кеша. Если файл был изменен, а сжатая версия нет, то nginx бездумно отдаст старую сжатую версию. В этом плане нам на помощь приходит старый-добрый WP Super Cache, который умеет создавать сжатую версию кеша одновременно с обычной (Если кому интересно, то WP Super Cache сжимает файлы с  gzip_comp_level=6).

Ну и теперь осталось включить статическое сжатие в настройках сервера

Select Code
server {
listen 80;
server_name tigor.org.ua;
root ////;
gzip_static on;

 Я не добавляю поддержку gzip_static on; на глобальном уровне, так как на некоторых объектах использование сжатия неэффективно. Например на отдельном домене для изображений сжатие отключено полностью.

Select Code
server {
listen 80;
gzip off;
expires 30d;
server_name g.tigor.org.ua;
root ////wp-content/gallery/;
}