mod_expires не устанавливает заголовки контроля кэша на изображениях JPEG - PullRequest
6 голосов
/ 01 марта 2011

Я не могу понять, почему простые старые изображения JPEG (около дюжины, < 10 KB каждое) на веб-сайте, над которым я работаю, не берут заголовки управления кэшем, они принудительно передаются. Правила .htaccess, которые я использую, основаны на самом последнем файле HTML5 Boilerplate .htaccess (соответствующий раздел ниже). Странно то, что на сайте примерно одинаковое количество PNG, и, за исключением двух из них, заголовки управления кэшем работают отлично.

<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

...

# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"

...

  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>

</IfModule>

(многоточие указывает на лишние ExpiresByType удалены разделы правила)

Я прошел путь от моего /etc/apache2/apache2.conf файла до почти всех включенных в него conf-файлов и не могу найти разумного объяснения. Я также возился, «Страспед» и «Хром» проверяли его до смерти часами, и я до сих пор ничего не понимаю.

Редактировать: Как упомянуто ниже, в этом корневом каталоге есть только один .htaccess файл. JPEG-файлы с MIME-типом image/jpeg работают нормально, но заголовки управления кэшем отсутствуют, и я не могу понять, почему.

1 Ответ

5 голосов
/ 01 марта 2011

Я добавил no-transform в раздел mod_headers и, конечно же, все работает как положено.Теперь я могу сломать стену ото лба.

  <IfModule mod_headers.c>
    Header append Cache-Control "public, no-transform"
  </IfModule>
...