Назад | Перейти на главную страницу

apache httpd mod_expires не работает, когда deflate включен

При установке Debian Jessie я вручную установил wordpress и отредактировал .htaccess, включаем mod_expires:

ExpiresActive On
ExpiresDefault modification

Однако, когда я использую Firefox Inspector для наблюдения за сетевым трафиком, я обнаруживаю, что все файлы js и css возвращают 200 OK со сжатым с помощью gzip содержимым вместо HTTP 304.

Затем я провел небольшой эксперимент.

  1. Я создал почти пустой (несжимаемый) файл с именем foobar.css и просмотрите его в firefox. Он вернулся 200 OK с участием несжатый данные о первом и 304 Not Modified второй раз.
  2. Я повторил одно и то же содержимое несколько раз, чтобы создать большой (сжимаемый) файл. На этот раз сервер вернулся 200 OK с участием сжатый данные в первый раз, во второй раз, в третий раз ... Каждый раз он возвращает одно и то же содержимое вместо ожидаемого 304 Not Modified.

я наблюдал /etc/apache2/mods-enabled/deflate.conf и обнаружил, что text/css по умолчанию сдувается:

...
AddOutputFilterByType DEFLATE text/css
...

Могут ли два модуля mod_expires и mod_deflate работать одновременно? Как мне их настроить?

Ужасно извиняюсь за ломаный английский.

РЕДАКТИРОВАТЬ: Я нашел здесь обходной путь: https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22 Однако это только обходной путь. Думаю, это действительно ошибка сервера.

Я нашел здесь обходной путь: https://bz.apache.org/bugzilla/show_bug.cgi?id=45023#c22

Просто введите следующую строку .htaccess или файл конфигурации httpd:

RequestHeader edit "If-None-Match" '^"((.*)-gzip)"$' '"$1", "$2"'

Грязно, но эффективно. ;)