No-cache

Estoy haciendo una web, y quisiera que mi sección de noticias, cuando entra una visita, se cargue desde el servidor, no desde el cache del ordenador del visitante, por si he actualizado la página
p.e.: Hoy entra una visita y lee mis noticias, luego mañana actualizo las noticias, pero pasado mañana entra otra vez la misma visita y ve las noticias antiguas de su cache, no las nuevas, ¿cómo puedo solucionar eso?
Me dijeron que era poniendo algo en el meta del head, pero quisiera sabes si funciona eso y también si hay algún programa en javascript que haga eso.

1 Respuesta

Respuesta
1
Hay una pregunta hace un tiempo que respondió mi camarada Bruckner, el nº1 de esta categoría y que creo que te va a valer la respuesta dice así:
Lo que quieres hacer, en realidad, no se hace desde Javascript, sino desde el propio código HTML. Se trata de insertar una indicación para que el documento no entre en el caché del navegador, que debe ir justo al principio de la página, dentro de la cabecera (HEAD).
Esta indicación se expresa mediante el tag META, y hay dos modos de hacerlo:
<meta HTTP-EQUIV="Pragma" CONTENT="no-cache">
De este modo se está indicando que no se "cachee" el documento.
<meta HTTP-EQUIV="Expires" CONTENT="[FECHA]">
De esta forma se indica que la copia de caché no será válida a partir de la FECHA, en el formato "WWW, DD MMM YYYY HH:MM:SS GMT" (y en inglés), por ejemplo: "Mon, 01 Jan 2001 00:00:00 GMT". Si pones una fecha en el pasado, o una fecha ilegal ("0", por ejemplo), el efecto es equivalente al del primer modo.
Así, tendrás que poner este META (el primero, o el segundo con un 0 en la fecha) al principio de la página que vayas a recargar, y después podrás recargarla por cualquier medio:
* Otro META:
<meta HTTP-EQUIV="Refresh" CONTENT="1; URL=pagina.html">
(el número indica los segundos de pausa antes de recargar).
* Con Javascript, usando location.reload()
* Con Javascript, usando history.go(0);
* Con Javascript, usando location.replace(location.href) (este método no deja huellas en la historia del navegador).
Tienes otra posibilidad más para recargar sin caché, y es pasándole un TRUE a location. Reload(). Esto fuerza a hacer una petición GET de HTTP al servidor, saltándose efectivamente la copia de caché local:
location.reload(true);
Puedes hacer esto desde el onLoad de BODY, pero si quieres que se ejecute antes de cargar la página puedes ponerlo directamente en un script en cabecera:
<head>
....
<script language="Javascript">
location.reload(true);
</script>
</head>
Puedes usar el META por un lado y cualquiera de las otras soluciones de recarga (META o Javascript) por el otro. Si tienes cualquier problema, pregúntame de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas