Установить заголовок управления кешем в зависимости от типа контента в apache

Мы пытаемся установить заголовок Cache-Control: max-age=300, общедоступный для всех страниц нашего общедоступного сайта. Чтобы использовать Filesmatch, мои страницы приложений не имеют никаких расширений. ExpiresByType доступен, но у него есть свои недостатки.

Я ищу способ установить заголовок элемента управления кэшем для всех страниц моего приложения с типом содержимого text/html. Есть ли способ добиться этого?

3 ответа

Более безопасный способ (потому что разработчики могут делать ошибки при настройке Content-Type для расширений файлов), чтобы установить заголовок на основе фактического Content-Type:

<IfModule mod_headers.c>
  Header set Cache-Control "max-age=300, public" "expr=%{CONTENT_TYPE} =~ m#text/html#i"
</IfModule>

Браузеру не нужно видеть расширение.html, чтобы он знал, что это документ типа text / html mime. Пока заголовок передает клиентскому браузеру, что документ действительно имеет тип mime text / html, это будет нормально:

ExpiresByType text/html "access plus 300 seconds"

Если вы уточните часть "имеет свои недостатки", мы, возможно, можем это прокомментировать.

Поскольку вы не можете использовать mod_expires, возможно, вы можете вместо этого использовать mod_headers: http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

Вы можете использовать filesMatch в сочетании с заголовком

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>
Другие вопросы по тегам