Cache en tu web con .htaccess
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.
- 2833 lecturas




Comentarios
Sobre la caché
Supongo que lo que te refieres es que la caché del servidor, una vez creada sirve para muchos usuarios diferentes que requieran la misma página exacta. En cambio con la caché a nivel de navegador, esta solo sirve a partir de la segunda página que entras. Es decir tu entras en una web, se te bajan todas las imagenes con la expiración de aquí 10 años, en la segunda página que use alguna de estas imagenes pues no las tendrá que bajar de nuevo.
SERVIDOR
========
Ventajas: Sirve para más de un usuario, aumenta la velocidad enormemente sobretodo si hay consultas con base de datos.
Desventajas: Ocupa espacio, requiere más cálculo a veces (aunque normalmente sale muy cuenta). Si haces un cambio, tarda un rato en reflejarse en la web de producción
NAVEGADOR
=========
Ventajas: Solo tienes que cargar los css e imagenes la primera vez.
Desventajas: Solo sirve para el propio usuario que accede con el navegador.
Bueno si se me ocurre algo más ya lo pondré.
¡Apenas cuentas nadas de caché por parte del servidor!
Pues eso,que no planteas ni de lejos sistemas de caché desde el servidor, y que ventajas y problemas tienen. Por ejemplo, ¿el caché por parte del navegador que ahorro nos proporciona de cara a dos usuarios distintos?
Ains... estos post's a medias :).
Saludos tio!
Gran curro (no sabía demasiado bien como va el caché de proxy).
Buenas Jose ;), prometo que
Buenas Jose ;), prometo que la próxima vez que escriba sobre este tema haré hincapié en la caché desde el servidor y sus ventajas.
Pero bueno hay que entender que nos siempre se le puede dedicar a un post el tiempo que queremos...
Un abrazo crack!!
Enviar un comentario nuevo