Anónimo Anónimo

Cómo evitar problemas con la cache del navegador

miércoles, 18 de abril del 2007
obokamanpor obokaman

En esta ocasión veremos como evitar un problema con el que seguro os habréis topado en más de una ocasión: El navegador no detecta un cambio que hemos realizado en un archivos estático ( CSS / Javascript / imagen ) y usa la copia cacheada en disco, impidiendo que la web muestre los estilos correctos, actualizados, o lanzando un error Javascript por el uso de una función no existente, hasta que forzamos una actualización con Ctrl-F5.

El caché de los navegadores actúa en el 90% de las ocasiones como nuestro aliado. Permite que determinados archivos estáticos se carguen una única vez por usuario, y se lean desde el disco en sucesivas visitas, reduciendo drásticamente los tiempos de carga.

De todas formas, el caché también puede jugar en nuestra contra en determinadas ocasiones: Si hemos realizado modificaciones a un archivo estático en un intervalo corto de tiempo, y además estas modificaciones han hecho variar muy poco el tamaño de nuestro archivo, es muy probable que el navegador no detecte que existe una nueva versión, y en vez de descargar el fichero más actual, haga uso de la copia que guarda en el disco para montar la página.

Como apuntábamos al principio, las consecuencias de esto suelen ser desastrosas: webs descuadradas o errores javascript por culpa de funciones que "deberían estar", pero que el navegador no ha cargado. Y, claro , el Ctrl-F5 sirve para mostrar la página al compañero de mesa o para tranquilizar al jefe que ha pegado un bote en la silla al ver el resultado, pero el usuario no tiene ni idea... va a verlo todo descuadrado hasta que expire la caché o le dé por forzar la recarga ( cosa poco probable ).

La solución a este problema es sencillamente añadir un parámetro a la llamada que hagamos al archivo estático. Los hay que optan por usar una fecha, y otros simplemente un valor numérico. Yo soy de estos últimos: como suelo usar Subversion para el control de versiones, lo que hago es actualizar el valor con el nº de versión correspondiente. De esta forma puedo saber, además, cuándo se hizo la última modificacion "sensible" a la hoja de estilos, echando un vistazo al showlog.

<link rel="stylesheet" type="text/css" href="/css/estilos.css?id=393" />

Cada vez que cambiamos el parámetro que hemos añadido a la llamada al CSS ( o Javascript, o imagen... ), lo que estamos haciendo es forzar al navegador a descargar de nuevo el archivo, retomando de esta forma el control sobre cuándo cachear y cuándo no.

¿Te pareció interesante este mensaje?

Mensajes relacionados

Comentarios

Gracias!

 Es realmente útil!

roger roger

puedes explicar mas detallado el codigo:

<link rel="stylesheet" type="text/css" href="/css/estilos.css?id=393" />

ese   id   a que se refiere, tengo un html que envia datos a un php, tambien se puede usar ese codigo en el html??? me gustaria que pudieras explicar mejor, gracias de antemano.

 Roger Delgado.

Anónimo Anónimo

¡no entendi lo del cohete a la luna!

Deja tu comentario

Deja tu comentario
Necesitas tener javascript activado para poder dejar comentarios

Identifícate en OboLog, o crea tu blog gratis si aún no estás registrado.

De esta forma, además, podrás mostrar tu imagen en los comentarios y no tendrás que rellenar tus datos cada vez.

Sponsors

Comentarios

Plantillas para mail gratis (ana)
holsa ¿como andas? yo bien x suerte bueno chau...(03 sep)
Elegir la mejor combinación de colores, herramientas online gratuitas. (marlyn pavez)
hola sabes kiero que me ayuden por favor compre un living color verde pastel y mi comedor es cafe...(03 sep)
Rediseño de Jquery.com (Oriol)
Ufff! Se les ha ido la mano, creo yo. Me quedo con el diseño anterior....(29 ago)
Crea el código QR de tu web automáticamente (TheDarkLady)
oh, lo intentare, ya habia visto algo parecido en algun sitio, gracias... fue interesante...(28 ago)
Tutorial Photoshop para convertir fotos a ilustraciones POP ART (obokaman)
Lo tienes al final y al principio del artículo, en el enlace ...(27 ago)

Login