Forzar a no leer el cache del navegador web

Mucha gente navega por Internet pero muy pocos conocen la existencia y la ayuda que prestan los “caches” a la navegación por Internet, ya que gracias a ellos conseguimos un acceso mucho más rápido a algunos servicios y además ahorramos recursos en la mayoría de los casos.

Teóricamente, según Wikipedia, un cache es un área de almacenamiento dedicada a la recuperación de datos utilizados frecuentemente a gran velocidad, pero realmente un cache va mucho más allá y más en el área de Internet.

cache navegador web

Los navegadores web guardan un cache con archivos estáticos descargados desde los sitios web: imágenes, páginas en HTML, archivos en CSS, archivos en javascript, etc…
Normalmente es beneficioso el cache de navegador debido a que el usuario obtendrá una carga mucho más rápida de la web después de acceder al sitio web por primera vez, y el servidor ahorrara recursos de ancho de banda y proceso al no tener que pasar los mismos archivos una y otra vez.

Pero cuando estamos desarrollando un sitio web o haciendo modificaciones en el, puede que el cache de navegador nos moleste, ya que puede ser que no se puedan visualizar los cambios al instante.

Usando unas simples etiquetas HTML podemos forzar para que el navegador del visitante no tenga en cuenta el cache del navegador, esto también es útil para cuando tenemos un sitio web que se actualiza mucho y el cache del navegador nos dificulta el proceso.

Todo lo que debemos hacer es introducir una de las siguientes etiquetas en el HEAD, es decir, entre la etiqueta <HEAD> y la etiqueta </HEAD>:

Con esto, el navegador del cliente ya no tendrá en cuenta el cache que ha guardado anteriormente.

En WordPress, para añadir estar etiquetas en el HEAD debemos editar la plantilla o theme, concretamente debemos editar el archivo “header.php” donde se encuentran las etiquetas <HEAD> y </HEAD> entre las que debemos meter una de las líneas anteriores.

También es posible forzar a una aplicación desarrollada en PHP para que no guarde cache de navegador, para ello debemos utilizar el siguiente código en el archivo PHP cargado:

 

Con esto nos aseguraremos de que el cache se resetee en todos los navegadores web y proxy http que visiten el sitio web.

Si tienes algún problema con el cache del navegador en tu sitio web o quieres implementar cache de navegador correctamente en tu proyecto, contacta con nosotros sin compromiso y te informaremos.

Share on twitter
Compartir en Twitter
Share on facebook
Compartir en Facebook
Share on pinterest
Compartir en Pinterest

¿Te gusta el blog?

Apúntate al boletín y te enviaremos los mejores artículos una vez al mes.

¿Te ayudamos?

Escríbenos si tienes dudas o necesitas una solución específica. Nuestros expertos te ayudarán en todo lo posible.

Sé el primero en enterarte de ofertas, sorteos y novedades.

Tenemos 64 comentarios en

"Forzar a no leer el cache del navegador web"

64 respuestas

  1. ..pero eso es para desarroladores. Ahora, la pregunta es, para evitar que lea de caché el navegador, en una web.. Cómo saber si al hacer , por ejemplo F5.. ya no lee del caché..si no que veo lo más reciente, actual.. el último cambio.. etc.. Cómo saber si está leyendo el browser directo del internet.. y no del caché ?…

    1. Hola Mauro, que yo conozca no existe ninguna solución cien por ciento efectiva, exceptuando la de borrar todo el cache o usar el modo incógnito de Google Chrome.

      Un saludo.

    2. hola @disqus_nyCYq4IYZs:disqus si queieres que tu navegador no tome la cache de la pagina q estas viendo en el instante, basta con presionar SHIFT+F5 automaticamente se recargara la pagina pero el navegador borrara la cache del sitio (probado en chrome)

    1. Hola Martinse, si lo aplicamos a WordPress, el código PHP podría meterse en el index.php o en el header.php del theme activo.

      Los código HTML si que funcionan, pero debes meterlos en el lugar exacto y no deben solaparse con otras reglas, como por ejemplo cache de navegador en el .htaccess, sino claro que no funcionan.

      Un saludo.

  2. Gracias por difundir pero no funciona del todo ni con los cuatro, entonces ¿el codigo de php se aplicaria en un archivo a parte o còmo?

  3. Buenas, necesito ayuda.

    Necesito que cuando modifico un archivo (o subo una nueva imagen con el mismo nombre que una anterior) el navegador no muestre lo que tiene en cache y pida los archivos modificados de nuevo al servidor.

    1. Hola.

      Lo mejor es que fuerces al navegador a refrescar la caché (enviando la cabecera pragma: no cache).

      La forma de hacerlo depende de tu sistema operativo y de tu navegador.

      En Chrome:
      – Si usas Windows o Linux: Pulsa y mantiene la tecla «control» y a continuación pulsa «F5».
      – Si usas MacOS: Pulsa y mantiene las teclas «comando» y «shift» para después pulsar «R».

      En Opera:
      – Mismo procedimiento que en Chrome.

      En Firefox:
      – Si usas Windows o Linux: Pulsa y mantiene la tecla «control» y «shift» para después pulsar «R».
      – Si usas MacOS: Pulsa y mantiene las teclas «comando» y «shift» para después pulsar «R».

      Adicionalmente, puedes abrir las herramientas de desarrollo de tu navegador (da igual cual sea), dirigirte a la pestaña «network» y marcar la opción «disable cache». Esto hará que mientras las herramientas de desarrollo estén abiertas no se aplique la caché de navegador.

      Un saludo.

    1. Hola, Leopoldo:

      Esas etiquetas no tocan ninguna configuración del charset. Asegúrate de que las introduces sin enviar espacios en blanco ni antes ni después, puesto que eso puede causar que sea el navegador —y no tu página— el que intente averiguar la configuración de juego de caracteres, causando que pueda detectar de forma errónea uno que no estés usando.

      Un saludo.

  4. Interesante este hilo… me pregunta si en un sistema wordpress con un plugin de caché como wp super caché o w3 total caché afectaría al código instalado en la cabecera head

    1. Hola:

      Esto que explica el artículo solo sirve para ignorar la caché del navegador (o dicho de un modo más técnico: para enviar la cabecera «pragma: no-cache» en todas las peticiones HTTP).

      Por lo tanto, los sistemas de caché de página, objetos, base de datos, etc. que tengas en WordPress no se verán afectados y se seguirán aplicando de forma normal (salvo que tú manualmente crees una regla que respete la cabecera que mencionaba antes). Esto implica que si tienes un código en el «» de tu página web —y éste está cacheado por W3 Total Cache— lo que explicamos en el artículo no te servirá.

      Cualquier cosa nos dices.

      Un saludo.

  5. Una consulta.. navegando quiero forzar a no usar el cache.. borrando todo el cache y usando posteriormente el modo incógnito del chrome por ejemplo.. lo estaria logrando? No almacena cache y no posee cache cual consultar.. es así ?? Gracias

    1. Hola:

      si abres una nueva ventana de incógnito ya no estarás usando la caché de tu ventana principal, por lo que no tienes que borrarla primero. Eso sí: esa ventana de incógnito tendrá su propia caché, una vez entres un par de veces en las webs.

      Si quieres desactivar la caché durante una sesión puedes abrir las «Herramientas de desarrollador» de tu aplicación y usar la opción «Red → Deshabilitar caché». De esta forma, mientras la ventana esté abierta no tendrás caché de navegador.

      Cualquier cosa nos dices.

      Un saludo.

      1. Estas seguro que mientras navego en incógnito guarda caché de la navegación? Pues, estuve controlando el almacenamiento de historial mientras navego y no incrementa a medida que lo hago.. siempre se mantiene se cero. Bueno, en caso que sea como dices.. lo mejor será deshabilitar caché.

      2. Una consulta más, no es que el modo incógnito no almacena caché? o simplemente lo borra al finalizar la navegación?

        Cuando dices: «esa ventana de incógnito tendrá su propia caché, una vez entres un par de veces en las webs.», cuando se actualiza la página mediante F5 vuelve a crear su propio caché desde 0 o sigue usando el de la navegación privada? Se borra una vez cerrado el navegador?

        Muchas gracias!

        1. Hola, AC:

          el modo incógnito, al abrirse, es un navegador «de cero», sin caché, cookies, sesiones, etc. No obstante, una vez comiences a navegar, éste incógnito comenzará a guardar cookies, sesiones, y caché de forma normal.

          En el momento en el que cierres la última pestaña de modo incógnito todo se borrará de forma que, si vuelves a abrirlo, empezarás de cero.

          Si pulsas F5 se actualizará de forma normal la página: lo que tengas en la caché de incógnito se servirá desde caché de incógnito.

          Te paso aquí una captura en la que puedes ver que estoy navegando en modo incógnito y hay recursos que se están sirviendo desde la caché (te lo señalo con una flecha).

          https://uploads.disquscdn.c

          Un saludo.

          1. Bien, entiendo. Y aprovecho para cerrar el tema.. si yo navego en modo incógnito.. y en vez de apretar F5, hago recarga forzada con CTRL + F5.. por más que esté acumulando caché la navegación incógnita, forzaría a cargar la última versión de la página.. no es así?

          2. Ahí probé lo que me decías, perfecta la explicación.
            Osea, la única forma de que tenga las actualizaciones de una página 100% fiables es deshabilitando el caché como me dijiste al principio, cierto?.
            Te comento, navego por una página que necesito tener la ultima versión apenas cambia inmediatamente.. por eso mi inquietud.
            Muchísimas gracias, realmente muy útil tu ayuda. Un abrazo!

            1. Te contesto a la última pregunta: si usas «Control+F5» siempre se ignorará la caché de navegador en esa actualización, estés en incógnito o en escritorio.

              Ten en cuenta que la caché de página no puede ser controlada desde el navegador.

              Gracias por comentar y por hacer tan buenas preguntas.

              ¡Un saludo!

              1. Hola Hector, como estás? Ayer probé Deshabilitar caché y ver si lograba ver primero la actualización de una página y no funcionó… la página se había modificado y sin embargo yo seguía viendo la versión vieja.. aún así tocando F5 con el caché desactivado. Alguna posible solución que se te ocurra? La página es una versión mobile.. puede tener algo que ver? Gracias!

  6. Buenas,

    y para prestashop 1.7.4.3 es igual??

    He añadido en /themes/MITEMA/templates/_partials/head.tpl
    pero nada…. safari y chrome en el movil siguen cogiendo cosas de la cache del navegador 🙁
    desactivada toda la cache y opciones de rendimiento en el backoffice pero nada

    alguna idea?




    1. Hola, Luis:

      el caché de navegador es independiente del CMS que uses. ¡Ojo!, no confundas caché de navegador y caché de página de Prestashop.

      Un saludo.

      1. el problema lo tengo con la cache de los navegadores de los clientes finales… y obviamente no les voy a decir…mira vacia tus datos navegacion o entra con navegación privada y veras la web bien… jejej

        1. Soy consciente, Luis. Pero, lamentablemente, «es lo que hay». La caché de los navegadores existe por una razón. En todo caso puedes decir que la caché es de 0 (y que los navegadores tengan que revalidar siempre los archivos) pero en este caso tus visitantes sufrirían problemas de rendimiento con la web.

          Si un recurso está cacheado en el lado del cliente, no hay nada que puedas hacer.

          Una aproximación que se usa mucho es servir los recursos seguidos de un query string que identifique su versión. Por ejemplo, si tu archivo «css» es la versión 1.1.0 podrías hacer que la ruta fuese «/miarchivo.css?version=1.1.0». Si en el futuro cambiases la versión a, digamos, «1.1.1», la ruta la podrías cambiar a «/miarchivo.css?version=1.1.1». Esto forzaría a los navegadores a descargarse una nueva versión del mismo.

          ¡Un saludo!

            1. Hola, Jose:

              primero, en la configuración de rendimiento de la tienda tendrías que desactivar todas las cachés.

              Después, tendrías que modificar los archivos .htaccess de tu dominio para añadir estas cabeceras HTTP:



              header set Cache-Control "no-cache, no-store, must-revalidate"
              header set Pragma "no-cache"
              header set Expires "0"

              Ten en cuenta, no obstante, que la decisión de cachear o no recae últimamente en el navegador y si éste decide no obedecer a las cabeceras anteriores no hay nada que no puedas hacer desde el punto de vista de la administración de un sitio web.

              Un saludo,

    1. Hola:

      desde luego, el código de una web puede comprobar que tengas una cookie para mostrar o no una cosa. P.ej.: si no tienes la cookie de sesión puede que se te muestre el contenido de invitado.

      ¡Un saludo!

  7. Buenas tardes @hectorluaces:disqus / @alvarofontela:disqus tengo un problemita que no estaría pudiendo solucionar..

    Les comento.. hay una página web en la cual te solicita loguearte con usuario y contraseña.. y en determinado momento del día habilita un contenido.. el cual al primero que llega, tiene la opción de una participación especial a un concurso.. es decir, el primero que ve la página «liberada» o «activada» y se inscribe.. tiene opción a una participación especial.
    De aquí mi problema.. nunca logro ver a tiempo cuando se abre esta participación..
    Siempre la veo una vez iniciada (y no es por problemas de lentitud, sino que la página se habilita y a mi me lo muestra unos minutos después de estar habilitada).. probé actulizar la página deshabilitando el caché desde el panel de «herramientas de desarrolladores – Devtools.. y a su vez borrando las cookies cada vez que se actualiza la página.. y aún así tampoco llego a ver la actualización en tiempo real.. siempre minutos luego de que ocurre. También me ha sucedido que desde dos PC ingresando con mismo usuario y contraseña (y las mismas condiciones de caché y cookies borrados cada vez q actualizo la página).. en una la veo refrescada antes que en otra.. es decir.. en una pc la veo ya activa y en la otra no.. (y se libera minutos después).. pero ninguna en el momento exacto en que se libera. (como para que llegue a participar a tiempo)..

    Teniendo en cuenta que deshabilito y borro caché y cookies en cada refrescada de página.. y debería traerme la última versión del servidor.. que puede estar fallando? alguna idea de como poder solucionarlo?

    Espero la explicación haya sido clara.. cualquier duda por favor avisenme..

    Agradecería mucho su colaboración.

    Saludos!

    1. Hola:

      ten en cuenta que pueden existir muchos niveles de caché intermedio que estén interfiriendo en tu acceso.

      Mi recomendación es que cuando quieras probar entres en modo incógnito. Si no lo ves bien, cierra el mismo modo incógnito y prueba un poco más tarde.

      Si en modo incógnito el problema persiste la caché que ves no es algo que esté de tu lado, si no del lado del servidor o de una caché intermedia.

      Cualquier cosa nos dices.

      ¡Un saludo!

        1. Hola:

          sí ayuda. La caché es de cada navegador (salvo en casos muy raros) por lo que si entras con un navegador nuevo éste usaría su propia caché, no la del antiguo.

          No obstante, ten en cuenta que si usas el nuevo navegador para entrar a la página varias veces ya hará uso de su propia caché.

          ¡Un saludo!

            1. Hola:

              eso ya es más difícil contestar porque depende de la configuración del servidor

              La respuesta más fácil es decirte que no, pero la respuesta técnicamente correcta dependerá de cómo se implemente la caché en el nivel de servidor, y te explico: para generar caché a nivel de servidor se toman datos de cada visita para generar un identificador único que será después reusado para buscar y presentar la caché.

              Por norma general este identificador va a generarse con el protocolo de la petición (HTTP o HTTPS), el dominio, la URL, el tipo de petición (POST, GET, HEAD, etc.), los parámetros de la URL y la IP del visitante, aunque también pueden entrar en juego otros factores como tu sesión de usuario, tu navegador etc.

              Así pues, la respuesta es que «puede», pero lo más probable es que no.

              ¡Un saludo!

              1. Hola Hector, como estás? Sigo luchando con este tema pese a que pasó mucho tiempo.. jaja.
                Te consulto una idea que se me ocurrió.. puede ser que el MAC address pueda llegar a generar algún caché que me altere/interfiera en las actualizaciones de la página? Tengo pensado probar modificar el MAC a ver si me soluciona..
                La verdad que probé de todo, y se me ocurrió esto porque siempre a comienzo de ciclo me funciona perfecto.. pero a medida que avanza el tiempo se me arruina y no me permite verlo correctamente..

                Que opinas? Gracias!

              2. Hola:

                sí, el MAC se guarda tanto en las tablas ARP de todos los dispositivos de red que conozcan a la máquina que identifiquen, además de en la caché de los pools DHCP.

                No obstante, me parecería raro que esto influyese en problemas de caché, ya que es un fallo muy bajo del stack de networking y eso implicaría que los fallos serían más del tipo «servidor no encontrado» o «tiranosaurio de chrome en fondo gris mirándote triste».

                Me temo que no puedo ofrecer mucha más ayuda sin revisar el caso in situ.

                Un saludo.

              3. Hola Hector, muchas gracias como siempre por tus respuestas.
                Sigo sin poder visualizar en tiempo real el cambio de esa web al momento de activar la semana de juego. Seguiré probando con alguna otra alternativa, pero creo haber probado casi todo ya jaja.
                Te agradezco mucho tu colaboración!
                Un abrazo!

  8. Buenas, yo tengo un problema que supongo que tiene que ver con el caché de mi sitio web pero hay un detalle que no me cuadra.

    Tengo una web donde cada 2 o 3 días tengo que actualizarle unos datos, resulta que si lo veo en mi pc u otra (con cualquier browser) se ven los cambios, pero cuando los reviso en mi celular no. Incluso tengo una app que se alimenta de ese sitio web a través de RSS y sucede lo mismo.

    Será que tengo que lo que me muestran aquí me funciona?
    Sólo tengo que poner una linea o todas las que muestran?
    Al hacer esto no debo preocuparme porque se desconfigure otra cosa? Como el google webmaster tools, google analytics u otro.

    Gracias de antemano.

    1. Hola:

      me temo que no entiendo muy bién que nos dices en tu primera pregunta.

      Respecto a la segunda: habría que poner todas, si bien es raro lo que nos comentas y no creo que sea problema del navegador web.

      ¿Estás usando caché de página a nivel de aplicación? — en caso afirmativo: vacíala.

      Te recomendaría que pruebes desde el teléfono usando un navegador en modo «incógnito» para saber a ciencia cierta si es problema de navegador o no. En el caso de que el problema persista en este modo, el fallo viene derivado de otra cosa.

      Un saludo.

      1. Buenas, ya probé con el navegador en modo incógnito y aún así no me sale actualizado en el chrome de mi celular, pero en el chrome de la PC si me sale actualizado.

        En realidad necesito que en mi app para android se vea actualizado al instante, pero no sé qué puede ser. Lo raro es que en el chrome del celular no se actualiza. T_T

        Qué puede ser?

        1. Hola, Jhonny:

          entonces tu problema no es el caché de navegador. Puede que en tu página web tengas un sistema de caché o que haya alguna intermedia.

          ¿Con qué software has hecho tu página web?, ¿usas alguna CDN?,

          Un saludo.

          1. Hola Héctor:

            yo utilizo un plugin llamado wp fastes cache, lo configuré para que borrará el cache cada vez que se creará y/o actualizará una nueva página o un nuevo post.

            Yo utilizo WordPress y Hostgator.

            Qué es un CDN?

            1. Hola, Jhonny:

              en este artículo explicamos qué es un CDN, échale un ojo y me comentas cualquier duda.

              Sobre el resto de cosas, me temo que todo parece estar correcto acorde a lo que nos dices. Si necesitas más ayuda dime el sitio (si es necesario te doy un correo) y te confirmo si está bien del lado del servidor o si es un problema de tu terminal.

              Un saludo.

              1. Hola, disculpa que no contesté, gracias por escribirme. Ya lo solucioné, tuve que contactar a mi proveedor para que me eliminar eso, era algo que ellos implementaban con el caché (Hostgator). Gracias por todo

  9. Buenas tardes Alvaro, estaba viendo tus respuestas y son de mucha ayuda para mi en estos momentos, disculpa mi ignorancia… como se pone de modo incognito una web? yo estoy trabajando con dreamweaver, esos códigos que pusiste se adaptan al dreamweaver verdad?

    1. Hola, Bruno:

      el modo incógnito lo pones en el navegador, no en la web. La forma de entrar varía, pero por lo general tienes que ir al menú «Archivo» y ahí deberías ver la opción de entrar en «modo incógnito».

      Ese modo es muy práctico porque cada vez que lo abres se borra la caché sin necesidad de tocar nada en tu navegador «del día a día».

      Respecto a Dreamweaver: sí, «se adaptan». Lo entrecomillo porque el código es código y es compatible con cualquier editor, como Dreamweaver.

      Cualquier cosa nos dices.

      Un saludo.

  10. Hola, mil gracias por el artículo!

    Tengo una duda. Tengo una web que fue migrada de un .es a un .com, el problema es que aunque la redirección 301 se hizo bien, en las serps siguen apareciendo los resultados de los dos dominios, aunque redirigen al actual.

    Tengo la duda de si esto puede pasar porque no estén bien implementado el status 304 en el Head de algunas páginas. O porqué existiese algún plugin de caché en el antiguo dominio que haya dado problemas en la migración.

    Muchas gracias!

    1. Hola, Marta:

      como bien dices, si estás enviando cabeceras 304 en alguna URL que no deseas, Google va a mantener dicho recurso indexado, con todo lo que ello implique.

      Revisa que las URLs de las serps (en todas sus variantes -www, sin www, http, https, etc.- y todos los dominios -.com y .es-) estén devolviendo un 301 y reenvíen a la URL correcta.

      De la misma forma, revisa el HTML generado en todas tus páginas y busca enlaces canónicos u otras URLs de tus dominios que puedan no estar actualizadas.

      Finalmente, me consta que muchos plugins de caché no invalidaban correctamente la caché y generaban errores 304 cuando deberían generar otros, si bien esto se daba en las URLs de los ficheros de caché minificados/combinados, no en URLs propias de WordPress.

      De cualquier forma, asegúrate de borrar la caché. En estos casos peleones yo tengo la manía de hacerlo a través de FTP para evitar suspicacias de los plugins que no borren ficheros viejos.

      Finalmente, ten en cuenta que el 304 devuelto por cualquier plugin de caché puede ignorar tus peticiones de «Pargma: no-cache», que es de lo que habla este artículo.

      ¡Un saludo!

  11. hola pero lo quiero es controlar el cache para que alargue su duración dentro del navegador como se puede hacer eso?

  12. Hola, gracias por la información.
    Unas consultas, si pongo todas las etiquetas para evitar la caché en el cliente, habría problema o las puedo poner todas sin problema?

    1. Hola, Sergio:

      puedes ponerlas todas, pero eso hará que tus visitantes no se beneficien de la caché de navegador.

      ¡Un saludo!

  13. no me funciono ninguno, estoy actualizando una imagen que previamente recorte con php y al regresar a la imagen history.back(-1), no la actualiza, es mas si apreto f5 tampoco la actualiza a pesar que la imagen ya cambio de tamaño pero conserva el mismo nombre

    1. Hola Danny, ¿existe la posibilidad de que tengas un proxy cache, un CDN o CloudFlare por delante de la web?
      Si es así, puede que sea esto lo que te esta guardando cache.

  14. Hola! tengo un gran problema, mi pagina web iba bien y en orden en modo local trabajando en mi maquina, la termine y la subí a mi host, pero en cuanto se cargo a la web aparecieron errores, cada vez que entro pareciera que lo subí mal programado, pero al dar «refresh» y se acomodaba a verse bien, crei solo era algo que aun estaba cargando los archivos, pero no, el problema persiste, revice en diferentes navegadores y el efecto es el mismo, en la maquina de forma local el sitio luce bien y normal, pero en web al verlo y cargarla me manda errores hasta que de refresh, y esto aplica para cada html de los interiores del sitio, no logro entender que pasa, pueden ayudarme con esta duda? que puede ser el problema? como podría solucionarlo?

    1. Hola Jake, con tan pocos datos no podemos ayudarte, ya que este tipo de errores se encuentran buscando en los logs de errores y descartando cosas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Utilizamos cookies propias y de terceros para obtener información estadística, mostrar publicidad personalizada a través del análisis de tu navegación, así como para interactuar en redes sociales. Si continúas navegando, consideramos que aceptas nuestra Política de cookies. ACEPTAR

Aviso de cookies