3

We are trying to set Cache-Control header: max-age=300, public to all our public site pages. To use Filesmatch, my applciation pages do not have any extensions. ExpiresByType is available, but it has its own disadvantages.

I am looking for a way to set cache control header to all my application pages with content type as text/html. Is there any way to achieve this?

skonka
  • 91

3 Answers3

4

A safer way (because developers can make misstakes when setting Content-Type for file extensions) is to set header based on the actual Content-Type:

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

The browser doesn't need to see a .html extension for it to know it is a text/html mime type document. As long as the header broadcasts to the client browser that the document is indeed of mime type text/html, this will do just fine:

ExpiresByType text/html "access plus 300 seconds"

If you elaborate on the "has its own disadvantages" part, we can perhaps comment on that too.

JayMcTee
  • 4,111
0

As you can't use mod_expires, maybe you can use mod_headers instead : http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

You can use filesMatch combined with header

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>
Froggiz
  • 3,083
  • 1
  • 21
  • 30