Cache en tu web con .htaccess

Por el 9 de octubre de 2008

en: Programacion

Hay diferentes métodos que nos permiten optimizar la velocidad de nuestro servidor gracias al uso de .htaccess de Apache (httpd.conf). Estos métodos son realmente simples y seguramente consigamos un aumento importante en el rendimiento de nuestros sitios.

Antes de ver las opciones que nos ofrece este tipo de caché debemos saber en que situación la debemos utilizar y para ello nos viene bien conocer los tipos de cache que existen.

Tipos de caché

Podemos decir que hay tres tipos de caché: caché de navegador, caché proxy y caché de pasarela.

Cada una de ellas tiene un objetivo y se pueden combinar entre sí.

Cada tipo puede utilizarse de diversas formas, por ejemplo la caché de navegador es privada y está presente en la máquina de usuario por lo que sólamente puede ser utilizada por un único usuario.

La caché proxy interviene en la comunicación cliente-servidor y sirven páginas a diferentes usuarios, suele ser usada por los proveedores de servicios de Internet (ISP), universidades y empresas para ahorrar ancho de banda.

La caché de pasarela funciona por parte del propio servidor y no distingue entre usuarios.

¿Por qué usar la caché en el navegador?

Este tipo de cache se produce entre el cliente y el servidor, nos permite salvar copias de las respuestas al cliente (HTML, imágenes, hojas de estilo), el funcionamiento es sencillo ya que la próxima vez que el cliente necesite ese archivo ni se molestará en preguntar al servidor y utilizará la copia previamente guardada.

Con este tipo de caché conseguiremos reducir la latencia y reducir el tráfico necesario para resolver las peticiones.

Reducimos la latencia porque la cache se encuentra en el lado del cliente y obtenemos mejores tiempos de respuesta a la hora de servir la página.

Reducimos el tráfico porque al recibir un menor número de peticiones por parte del cliente el ancho de banda necesario para servir la página es inferior.

Cache con Apache y .htaccess

Tenemos que tener claro que hay tres mecanismos básicos para controlar la caché web.

  • Frescura, permite que una respuesta sea usada sin comprobar de nuevo el servidor.
    Ej: la cabecera de respuesta (header) Expires facilita una fecha en la que el documento caduca, y la directiva Cache-Control: max-age informa al cliente del número de segundos durante los que la respuesta será válida.
  • Validación, nos permite comprobar si una respuesta cacheada sigue siendo buena despues de cadudar.
    Ej: la cabecera Last-Modified, el cliente puede hacer una petición condicional usando la cabecera If-Modified-Since para saber si la página cambió.
  • Invalidación, es un efecto secundario de otra petición.
    Ej: si una URL asociada a una respuesta por medio de una cabecera y realizamos una petición POST, PUT o DELETE a esa misma respuesta, la cache queda invalidad.

Puedes encontrar información adicional en htaccess Caching.

# 1 AÑO
<FilesMatch "\.(ico|pdf|flv)$">
Header set Cache-Control "max-age=29030400, public"
</FilesMatch>
# 1 SEMANA
<FilesMatch "\.(jpg|jpeg|png|gif|swf)$">
Header set Cache-Control "max-age=604800, public"
</FilesMatch>
# 2 DIAS
<FilesMatch "\.(xml|txt|css|js)$">
Header set Cache-Control "max-age=172800, proxy-revalidate"
</FilesMatch>
# 1 MINUTO
<FilesMatch "\.(html|htm|php)$">
Header set Cache-Control "max-age=60, private, proxy-revalidate"
</FilesMatch>

Conclusión

Uno de los objetivos principales para un administrador es ofrecer el mejor servicio posible y para ello es necesario un acceso rápido al contenido, en este sentido hay muchas soluciones a nivel de software que permiten realizar el cacheado de nuestro sitio web.

Lo mejor es analizar como mínimo dos soluciones y probar su funcionamiento y el aumento de rendimiento que conllevan cada una de ellas, una vez evaluados los datos la elección será mucho más óptima.

Dejar un comentario