Мы пытаемся установить заголовок Cache-Control: max-age = 300, общедоступный для всех наших общедоступных страниц сайта. Чтобы использовать Filesmatch, мои страницы приложений не имеют расширений. ExpiresByType доступен, но у него есть свои недостатки.
Я ищу способ установить заголовок управления кешем для всех моих страниц приложения с типом содержимого как text / html. Есть ли способ добиться этого?
Более безопасный способ (потому что разработчики могут ошибаться при установке 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, чтобы он знал, что это документ mime-типа text / html. Пока заголовок транслирует в клиентский браузер, что документ действительно имеет тип 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>