У меня есть менеджер активов для процессов css и js через php. Я использую nginx и php5-fpm для загрузки своего приложения. но вернул файлы css и js, а не gziped.
например мой URL http://mysite.com/phpcssprocessor/mycssfile.css
этот файл создается через php.
это моя конфигурация виртуального хоста:
# /
location / {
# gzip
gzip on;
gzip_static on;
gzip_proxied any;
gzip_types application/javascript application/json application/x-javascript application/xml text/css text/javascript text/plain text/x-component text/xml;
# disable etag
if_modified_since off;
add_header 'Last-Modified' '';
# mvc rewrite
try_files $uri $uri/ /index.php?$uri&$args;
}
Ваш php-скрипт устанавливает Content-Type:
Заголовок ответа HTTP правильно? Соответствует ли это вашему gzip_types
параметры?
Ваш клиент устанавливает Accept-Encoding: gzip
Заголовок HTTP-запроса правильно?
Имеет ли ваш соответствующий http
, server
или location
откуда php
обрабатывается, включить директивы для сжатия gzip? Когда внутреннее перенаправление происходит через try_files
из /
location
к php
location
, указав любой тип сжатия gzip в /
location
было бы noop - вы должны либо указать его глобально, либо в последнем location
который завершает запрос (промежуточные местоположения не влияют на окончательную обработку).
Без всех трех вышеперечисленных случаев сжатия gzip не будет.
В вашем конкретном случае кажется, что try_files
перенаправить на другой location
причиняет вам горе, поскольку я вижу, что вы, должно быть, указываете материал gzip в /
location
только, что, вероятно, нет. Переместите директивы gzip за пределы /
location
. Точно так же вы можете переместить другие варианты подальше от try_files
/
location
также.
Я просто столкнулся с той же проблемой и, наконец, решил ее.
Проблема заключалась в том, что файл style.css.php имел вверху:
header("Content-type: text/css; charset: UTF-8");
И это помешало nginx заархивировать файл. Очевидно, "gzip_type text / css" не подхватит это из-за части "charset".
Я удалил "; charset: UTF-8" из аргумента header (), и nginx начал сжатие вывода.
header("Content-type: text/css");
Позже я добавил
charset UTF-8;
в блоке расположения nginx для этого процессора CSS, поэтому я получаю правильные заголовки и gzip работает.
Надеюсь, это поможет и кому-то другому.