Cache-Control es una cabecera HTTP que define la cantidad de tiempo y la forma en que un archivo se almacenará en cache.
Este archivo explicará como usar usar cache-control, que significan los valores y como hacer que funcione en tu página web.
La mayoría de paginas web modernas y rápidas usan cache-control para aprovechar el almacenamiento en cache del navegador.
Contenido de esta guía:
Fundamentos de cache-control
Lo principal que debemos saber de cache-control es que define el tiempo en que un archivo será almacenado en cache y la forma en que el archivo será almacenado.
Cache-Control: max-age=2592000, public
Cuando un archivo es consumido por un navegador las cabeceras HTTP también son consumidas. Es así que cuando la cabecera cache-control esta presente el navegador respetara los valores que esta almacena.
Si el navegador ve que el archivo debe ser almacenado por 5 minutos, este será almacenado por 5 minutos, así mismo el archivo no será descargado de la nube mientras duren los 5 minutos.
Un ejemplo podría ser el logo de tu sitio. Si un visitante ingresa a una de tus paginas, en primera instancia el logo se descargara de la nube, consumiendo así recursos de internet. En ese sentido si el usuario se dirige a otra de las paginas del mismo, el logo no volverá a descargarse. En su lugar el navegador usara la versión cacheada ahorrando recurso de internet.
Qué es max-age?
- Define la cantidad de tiempo que una imagen debe almacenarse en cache.
- La directiva de respuesta “max-age” indica que un archivo cacheado se considera obsoleto después de que el tiempo indicado sea mayor en segundos.
Usando max-age
Un ejemplo de código de max-age luce como lo siguiente:
max-age=2592000
Max-age se considera en segundos, aquí algunos ejemplos:
- 1 minuto: max-age=60
- 1 hora: max-age=3600
- 1 día: max-age=86400
- 1 semana: max-age=604800
- 1 mes: max-age=2628000
- 1 año: max-age=31536000
.htaccess
Esta es la opción más usada por los programadores, para añadir cabeceras HTTP.
Un ejemplo de .htaccess
El código mas básico para definir la cabecera cache-control con .htaccess es:
Header set Cache-Control "max-age=2628000, public"
Sin embargo este código no permite definir max-age diferentes por cada tipo de archivo.
Para definir diferentes cabeceras cache-control para diferentes tipos de archivos, podemos usar lo siguiente:
<filesMatch ".(css|jpg|jpeg|png|gif|js|ico)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>
Este código básicamente dice lo siguiente:
Si el tipo de archivo es css, jpeg, jpg, png, gif, js, o ico entonces aplica la regla cache-control.
Aquí otro ejemplo cacheando imágenes por un año y cacheando archivos css y js por un mes.
# Imagenes almacendas por un año
<filesMatch ".(jpg|jpeg|png|gif|ico)$">
Header set Cache-Control "max-age=31536000, public"
</filesMatch>
# Almacenando js y css por un mes
<filesMatch ".(css|js)$">
Header set Cache-Control "max-age=2628000, public"
</filesMatch>
NGINX
Usando la directiva expires puedes agregar instrucciones de cacheo a tu servidor o a una ruta en especifico.
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
}
El código de arriba aplica para todos los archivos que se listan. Siendo así que puedes remover algunos y conservar otros.
Puedes crear bloques de código para tipos de archivo especifico.
Si te interesa saber más del tema te invito a revisar documentación de Mozilla.
También te dejo un enlace donde explico como funciona un hosting.