En esta ocasión veremos la forma de prevenir el cache de contenido con PHP. Normalmente cuando se accede a una página web, el browser guarda una copia para que en la siguiente ocasión que solicites esa página accedas de forma mas rápida.
Nuestro objetivo es evitar que el browser guarde el contenido de nuestras páginas, esto para que el usuario acceda siempre a la ultima información de nuestro web.
Evitando Cache
Para evitar cache de contenido, enviamos headers para los diferentes navegadores indicando que el contenido no se debe guardar en la memoria cache. Esto lo hacemos de la forma:
header("Expires: Tue, 03 Jul 2001 06:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
Ahora bien, en caso que vayamos a utilizar esta función repetidas veces es conveniente contertir este código en una función.
// archivo: functions.php function noCache() { header("Expires: Tue, 01 Jul 2001 06:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); }
Luego en cada página que deseamos prevenir cache, primero incluimos el archivo y luego llamamos a la función, esto se hace al inicio de toda página php.
include("function.php"); ae_nocache(); // codigo php
Como ven, con dos lineas adicionales a nuestras páginas podemos evitar el cache. Espero les sirva este tip que aunque es muy sencillo siempre hace falta.
Comentarios Total 27 comentarios
Publicado: 05/02/2008 11:08 am
no hace falta crear ni llamar a la funcion sobra con:
al inicio del fichero .php
Publicado: 05/02/2008 11:09 am
require_once(«function.php») :P
Publicado: 05/03/2008 6:12 pm
Gracias, no encontraba todos esos headers, san google siempre muy veloz
Me gusto el diseño de la pagina apenas la vi… en realidad me gusta mucho el verde :P
Gracias
Publicado: 10/06/2008 10:08 am
Gracias por el aporte, siempre tan necesario.
IExplorer me estaba haciendo perder la paciencia…
Publicado: 06/08/2008 9:02 am
http://www.anyexample.com/programming/php/completely_disable_any_browser_caching.xml
Publicado: 16/09/2008 11:34 pm
[…] Enlace | unijimpe […]
Publicado: 09/12/2008 2:57 pm
Muchas gracias, muy útil esta información
Publicado: 22/01/2009 12:52 pm
Gracias por la ayuda…
Saludos.
Daniel (-_-)
Publicado: 02/06/2009 9:11 am
Por que esa fecha? 01 Jul 2001 06:00:00 GMT
Publicado: 02/06/2009 10:23 am
Pues que esta fecha es del 2001 lo que le indica al browser que hace mucho tiempo que ya caduco la página con lo cual no hará una copia en el cache.
Publicado: 03/06/2009 11:43 am
la llamada esta mal
[code]include("function.php");
ae_nocache();[/code]
deberia ser
[code]include("function.php");
ae_nocache();[/code]
Publicado: 03/06/2009 11:45 am
perdon lo puse mal deberia ser
include(”function.php”);
nocache();
como el nombre de la funcion sino daria un error de que la funcion no existe
saludos
atx
Publicado: 13/10/2009 9:12 am
este IE es una M….. no me funciona ni con esto, tengo reportes en pdf y cuando genero uno me carga el anterior
Publicado: 27/01/2010 8:27 pm
gracias por el dato estaba queriendo esto gracias
Publicado: 27/01/2010 8:30 pm
por cierto se podra dar ese header a un archivo especifico????
Publicado: 02/06/2010 4:59 pm
Hola, muchas gracias, como siempre tu web con contenidos muy útiles…saludos desde Santiago de Chile..
Publicado: 19/07/2010 9:56 am
Yea !!!
Me fue de mucha utilidad en especial
header(«Cache-Control: no-store, no-cache, must-revalidate»);
para no volver a cargar votos de una web !!!
Publicado: 23/10/2010 2:39 pm
Muchas gracias por el aporte, llevaba una semana buscando la solucion.
Internet Explorer me tenia loco.
Publicado: 26/10/2010 12:29 pm
Hola a todos, el problema es que en firefox esto no me funciona, el problema se da porque llamo una función que me descarga una imagen desde la base de datos. Estas cabeceras las pongo luego de colocar las cabeceras de tipo de archivo, muy bien el archivo se visualiza, pero si cambio para que me muestre otra imagen me muestra la anterior y solo se arregla si presiono ctrl + f5
Publicado: 26/10/2010 1:27 pm
Retiro lo dicho, funciona perfectamente!!!!!
Publicado: 08/12/2010 6:59 pm
hola amigos yo creo que soy un poco tapado pero no entiendo por que no quieren enviar el cache de sus web?? haciendo esto no cargarian mas rapidos?
Publicado: 17/01/2011 6:32 am
alejandro:
«hola amigos yo creo que soy un poco tapado pero no entiendo por que no quieren enviar el cache de sus web?? haciendo esto no cargarian mas rapidos?»
en muchas ocasiones es necesario que el contenido sea actualizado por ejemplo al enviar datos a una base de datos
Publicado: 29/09/2011 11:09 am
Hola yo tengo un problema con web services, utilizo php para el cliente cn nusoap y java para el servidor con glassfish, el problema que tengo es que aveces al modificar datos en la base de datos del servidor y recargar la pagina me trae datos anteriores a la modificación, las cabeceras de php que mencionan también sirven para estos casos??? Gracias desde mexico !!
Publicado: 17/04/2012 8:09 am
Hola soy diseñadora grafica, pero no entiendo casi nada de programcion y me anime a hacer esta pagina de actualizacion diaria…pero ahora tengo problemas: sucede que muchas veces no se ve la ultima actualizacion sino lo almacenado en el cache.
Le agregue unas etiquetas meta…
pero solo me resulta en IE y las versiones mas nuevas..firefox por ejemplo me sigue mostrando lo que tiene almacenado en el cache del dia anterior...otra cosa que me sucede es que en la pagina principal (index) clickeo en un link que me dirije a leer la nota completa y cuando pongo "regresar a la pagina principal" me vuelve a un index anterior o mas viejo"
Por favor si alguien que sepa me puede ayudar y en ese caso ser lo mas explicativo posible les estaria sumamente agradecida!!
Publicado: 05/08/2012 10:34 am
Muchas gracias, la verdad estaba acostumbrado a que PHP automaticamente no cacheara, pero en el ultimo sitio web que hice por alguna razón no era automatico.
Publicado: 29/04/2014 10:14 am
hola, disculpen, yo hago pruebas con internet explorer 10, y no veo que se cachee imagenes ni nada, en que versiones de navegadores se cachean las paginas? o bajo que circunstancias, gracias y saludos
Publicado: 30/04/2014 8:18 am
no me funciona, mi archivo pdf sigue cacheado a pesar de que pongo ese codigo, ademas revise el cache y ni con ese codigo propuesto se borra la cache, alguna ayuda?