Evitar cache con PHP y HTML5 [Ejemplo completo]
Evitar cache con PHP y HTML5. Si no conocían la existencia y la gran bondad que prestan los “caches” a la navegación por Internet, gracias a ellos una navegación más rápido a algunos servicios.
En este artículo nos enfocaremos a prevenir el cache de contenido con PHP y HTML5. Por lo tanto, cuando se accede a una página web, los navegadores modernos guarda una copia para que en la siguiente ocasión que solicites esa página accedas de forma más rápida y veloz (almacena en datos la información).
¿Qué es el Caché en el navegador?
La memoria caché es una memoria temporal donde se almacena información referente a las páginas que vamos visitando con los diferentes navegadores de internet que estemos usando, generalmente los más modernos. Esta información, contiene diferentes tipos de archivos, imágenes, textos, videos, documentos PDF, etc.
Ventajas de Evitar cache con PHP
Si deseamos lograr que todos los cambios de la página sean vistos automáticamente por los visitantes del sitio, lo que debes hacer, es crear un método que funcione por medio del código de la página.
Con esto, se descarta la necesidad de obligar al navegador a guardar los datos en el caché, y así, los cambios se verán de inmediato en todos los navegadores de los visitantes sin importar su configuración.
Forzar a no leer el cache del navegador web
Este articulo tiene como objetivo evitar que el navegador web guarde el contenido de nuestras páginas, esto para que el usuario acceda siempre más rápido a los recursos e informaciones.
Los navegadores web actuales guardan un cache con archivos estáticos descargados desde los sitios web: imágenes, páginas en HTML, archivos en CSS, archivos en JavaScript, videos, PDF, etc.
Generalmente su uso es recomendable debido a que el usuario tendrá un resultado muy eficaz con una carga mucho más rápida de la web después de acceder al sitio web por primera vez. Por lo tanto, el servidor ahorrara recursos de ancho de banda y proceso al no tener que pasar los mismos archivos una y otra vez.
Evitar Cache en PHP
Para lograr este objetivo, tenemos que crear varios headers para los diferentes navegadores indicando que el contenido no se debe almacene en la memoria cache.
A continuación, veremos un ejemplo de su uso.
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");
Usando Función PHP
Si, deseamos usarlo en varios archivos o en todo caso en todo nuestro sistema web podemos usar una función y llamarlo para que se ejecute en cualquier sector del sistema.
Ejemplo de función
// archivo: funcion.php function noCachePHP() { 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"); }
Llamando a la función evitar cache
Solo tenemos que invocar al archivo que contiene la función con un INCLUDE y el nombre del fichero. Sin embargo, esto se debe de colocar al inicio de los archivos.
<?php include_once("funcion.php"); noCachePHP(); // codigo PHP ?>
Ahora, con solo dos líneas adicionales a nuestras páginas podemos evitar el cache, sin complicaciones.
Evitando cache en HTML5
EN el lenguaje de marcas para evitar la cache tenemos que introducir una de las siguientes etiquetas en el HEAD, es decir, dentro de la etiqueta <HEAD> y cierre </HEAD>:
<meta http-equiv="Expires" content="0"> <meta http-equiv="Last-Modified" content="0"> <meta http-equiv="Cache-Control" content="no-cache, mustrevalidate"> <meta http-equiv="Pragma" content="no-cache">
Con esta declaración, el navegador del usuario final ya no tendrá en cuenta el cache que ha guardado anteriormente y mostrara el contenido real del fichero.
En CMS WordPress
Es casi similar a las anteriores integraciones. Para añadir, debemos de buscar la etiqueta HEAD y debemos editar la plantilla o theme según el caso y concretamente debemos editar el archivo “header.php” donde se encuentran las etiquetas <HEAD> y </HEAD>.
<head> <?php header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 header("Expires: Sat, 1 Jul 2000 05:00:00 GMT"); // Fecha en el pasado ?> </head>
Conclusión
Si bien la cache es muy importante en un proyecto web o página web con el fin de acelerar la carga de la página web, es más la mayoría de las paginas hechas en wordpress usan cache para acelerar la carga de la web.
Sin embargo, en algunas ocasiones suele ser perjudicial por ejemplo al:
- Mostrar un modal con información dinámica.
- Crear un documento PDF dinámico con MySQL
- Generar fichero Excel, etc.
En el momento que editamos un registro por causa de la cache la información no suele cambiar de manera inmediata. Por lo tanto, en estos casos es recomendable no guardar cache en el navegador y lo podemos solucionar con las opciones descritas en el presente artículo.
Con estas opciones nos aseguraremos de que el cache no se almacene en los navegadores web y proxy http que visiten el sitio web.
Eso no funciona en los navegadores actuales 2022