establecer el encabezado de control de caché según el tipo de contenido en Apache

establecer el encabezado de control de caché según el tipo de contenido en Apache

Estamos intentando configurar el encabezado Cache-Control: max-age=300, public en todas las páginas de nuestro sitio público. Para utilizar Filesmatch, las páginas de mi aplicación no tienen extensiones. ExpiresByType está disponible, pero tiene sus propias desventajas.

Estoy buscando una manera de configurar el encabezado de control de caché en todas las páginas de mi aplicación con un tipo de contenido como texto/html. ¿Hay alguna manera de lograr esto?

Respuesta1

Una forma más segura (porque los desarrolladores pueden cometer errores al configurar Content-Typelas extensiones de archivo) es establecer el encabezado según lo real Content-Type:

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

Respuesta2

El navegador no necesita ver una extensión .html para saber que es un documento de tipo mime texto/html. Siempre que el encabezado transmita al navegador del cliente que el documento es de hecho de tipo mime texto/html, esto funcionará bien:

ExpiresByType text/html "access plus 300 seconds"

Si profundiza en la parte "tiene sus propias desventajas", quizás podamos comentar eso también.

Respuesta3

Como no puedes usar mod_expires, tal vez puedas usar mod_headers en su lugar:http://httpd.apache.org/docs/2.2/mod/mod_headers.html.

Puedes usar filesMatch combinado con el encabezado

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

información relacionada