definir o cabeçalho de controle de cache com base no tipo de conteúdo no Apache

definir o cabeçalho de controle de cache com base no tipo de conteúdo no Apache

Estamos tentando definir o cabeçalho Cache-Control: max-age=300, public para todas as páginas públicas do site. Para usar o Filesmatch, minhas páginas de aplicativos não possuem extensões. ExpiresByType está disponível, mas tem suas próprias desvantagens.

Estou procurando uma maneira de definir o cabeçalho de controle de cache para todas as páginas do meu aplicativo com tipo de conteúdo como texto/html. Existe alguma maneira de conseguir isso?

Responder1

Uma maneira mais segura (porque os desenvolvedores podem cometer erros ao definir Content-Typeextensões de arquivo) é definir o cabeçalho com base no real Content-Type:

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

Responder2

O navegador não precisa ver uma extensão .html para saber que é um documento do tipo text/html mime. Contanto que o cabeçalho transmita ao navegador do cliente que o documento é de fato do tipo mime text/html, isso funcionará perfeitamente:

ExpiresByType text/html "access plus 300 seconds"

Se você elaborar a parte "tem suas próprias desvantagens", talvez possamos comentar sobre isso também.

Responder3

Como você não pode usar mod_expires, talvez você possa usar mod_headers:http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

Você pode usar o filesMatch combinado com o cabeçalho

<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=300, public"
</filesMatch>

informação relacionada