Posts Tagged ‘expires’

h1

Mejorando el rendimiento: Expires Header

29 enero 2009

Una técnica que nos ayuda mucho a mejorar la experiencia del usuario a la hora de cargar la página es que el navegador del usuario cachee la información, en muchos de los casos, se suele cachear sólo las imágenes, pero es recomendable que se cacheen todos los elementos posibles, como css, scripts y demás porque así mejoramos la carga. Evidentemente esto conlleva algunos “problemas”, por ejemplo, si el usuario limpia la caché, se perderá la información que tenga almacenada o si es la primera vez que se mete en la página, el tiempo de carga no mejora, pero ante esto no se puede hacer nada, o sí se modifica algo y la fecha de expiración no se ha cumplido todavía ¿Qué pasa? para algunos temas hay solución y para otros no. A continuación hablaré un poco de la caché del navegador.

Si usamos la cache del navegador, todos los elementos cacheados serán consultados en disco en vez de realizar una petición HTTP, por lo cual se reducirá mucho el tiempo de carga, normalmente se utiliza el expires header y se le pone una fecha y hora hasta la cual la información cacheada es válida.  Una alternativa es Cache-Control, que se introdujo en HTTP/1.1 para cubrir las limitaciones del Expires Header, ya que, éste, usa una fecha específica, lo cual implica una sincronización más estricta, a demás de que se debe comprobar continuamente dicha fecha. En cambio el Cache-Control usa la directiva max-ege para especificar cauanto tiempo un elemento esta en cache. Con esta directiva se define el tiempo en segundos si es menor que ese número de segundos se usará el elementos. De todas formas se tiene que definir ambos cosas el Expires-Header y el Cache-Control dónde prevalecerá el max-age, de todas formas, aunque el Cache-Control supla los problemas del Expires Header, tenemos que tener cuidado con el mantenimiento y la sincronización. Existe un módulo de Apacha, el mod_expires permite usar el Expires-Header con un formato similar al del max-age, mediante la directiva ExpiresDefault. Gracias a esta directiva, la sincronización nos da un poco igual, ya que es relativa a la petición. Lo cual hace esta la mejor opción.

Uno de los grandes problemas que podemos encontrarnos es que pasa si modificamos alguno de los elementos que indicamos que se cacheen, al estar en la cache y dentro de plazo el usuario no obtendrá los cambios. Para solucionar esto, tenemos que cambiarle el nombre a los ficheros, el problema se encuentra en que si no construimos nuestras páginas dinámicamente, o de alguna forma mediante la cual sólo haya que cambiar los nombres en un sitio centralizado, esto puede ser un suplicio.

Anuncios