Как я могу проверить, что модуль nginx gzip_static работает? - PullRequest
49 голосов
/ 17 марта 2010

Как я могу проверить, что nginx обслуживает версию статических файлов .gz, если они существуют?

Я скомпилировал nginx с помощью статического модуля gzip, но я не вижу упоминаний о версии .gz, которая была представлена ​​в моих журналах. (Я минимизировал файлы global.js и global.css с их версиями .gz в одном каталоге).

Соответствующая часть nginx.conf выглядит так:

gzip  on;
gzip_static on;
gzip_http_version 1.0;
gzip_disable "MSIE [1-6]\.";
gzip_vary on;

gzip_comp_level 2;
gzip_proxied any;
gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

Любые указатели приветствуются.

Ответы [ 6 ]

82 голосов
/ 20 октября 2010

Используйте strace. Во-первых, вам нужно определить PID процесса nginx:

# ps ax | grep nginx
25043 ?        Ss     0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
25044 ?        S      0:02 nginx: worker process

Итак, 25044 - это рабочий процесс. Теперь проследим это:

# strace -p 25044 2>&1 | grep gz
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438
open("/var/www/css/patches/patch_my_layout.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/yaml/core/iehacks.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/js/koznazna5.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 216

Как видите, он пытается найти версии файлов .gz.

19 голосов
/ 22 октября 2012

Изменить содержимое неархивированного файла. И затем touch оба файла (одновременно - то есть: в одном экземпляре touch). Если при загрузке файла в браузер (очищенный кешем) вы получаете неизмененный файл, то nginx обслуживает файл static-cached-gzipped.

Простой способ избежать «я только что извлек кеш?» беспокоит то, что нужно извлечь из командной строки curl, так как curl не кеширует.

17 голосов
/ 19 марта 2010

Я бы отключил автоматическое сжатие и лог gzip_ratio:

http {
   gzip off;
   gzip_static on;

   log_format log_with_ratio "... $gzip_ratio ...";

   server {
      access_log /var/log/nginx/file.log log_with_ratio;
   }
}

Обратите внимание, что вы можете переопределить gzip, gzip_static и access_log для каждого уровня сервера и местоположения.

1 голос
/ 01 августа 2016

Есть несколько подсказок, которые я заметил относительно ETag заголовка ответа.

Если nginx обслуживает статический файл, тогда заголовок выглядит так: ETag: "135a-BQhu6KL71dyeCXcVZme6ug", однако, когда nginx сжимает ответ (через модуль gzip), он выглядит так: ETag: W/"135a-BQhu6KL71dyeCXcVZme6ug" (уведомление W/).

Вы можете использовать это, а также Content-Encoding: gzip для различения простых статических файлов, предварительно сжатых статических файлов и файлов, сжатых на лету.

0 голосов
/ 27 апреля 2016

Вы можете использовать Chrome Dev Tools на вкладке Сеть, если включите столбец Content-Encoding (щелкните правой кнопкой мыши столбцы, чтобы включить / отключить определенный контент в таблице):

Скриншот Chrome Dev Tools с включенной колонкой Content-Encoding

0 голосов
/ 19 декабря 2014

Я обычно использую инструменты Chrome Dev и смотрю размеры файлов для рассматриваемых файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...