WordPress Hosting

Cómo desactivar la(s) caché(s) completamente en WordPress

Me habrás oído y leído montones de veces hablar de la importancia de utilizar sistemas de caché para acelerar la carga de páginas, de hecho es imprescindible ofrecer nuestros contenidos desde una caché.

En WordPress no existen los contenidos, se crean en tiempo real

Esto es debido a que en los CMS, y por supuesto también en WordPress, las páginas en sí no existen hasta que una visita las reclama desde su navegador, y en ese momento el CMS, consultando a la base de datos, crea en tiempo real la página, entrada, producto o el tipo de contenido que sea que tenga que tener la URL.

Es raro pero es así, no hay un archivo HTML único para cada URL de tu web, solo tienes que buscar en las carpetas de instalación de tu WordPress para comprobarlo. Lo que vas a encontrar es esto:

  • Archivos del sistema necesarias para que funcione WordPress – Carpetas wp-admin y wp-includes
  • Archivos de imagen, idiomas, plugins y temas que usa tu web WordPress – En la carpeta wp-content y sus subdirectorios.
  • Diversos archivos sueltos en todas las carpetas, normalmente de utilidad, seguridad, etc.

Pero no habrá, por defecto, una carpeta de archivos HTML, uno para cada una de tus páginas, entradas, productos, etc.

Lo que hace WordPress, y cualquier CMS dinámico, es que cuando llega un usuario a una URL registrada en la base de datos, comprueba en las distintas tablas de la base de datos qué contenido debe mostrar esa URL y a continuación genera la página mediante las correspondientes consultas SQL y funciones PHP y específicas de WordPress, y como resultado al visitante se le muestra el contenido que debe tener esa URL, según tú lo creaste.

Esto, aunque parezca mucho, es un proceso que dura muy poco, lo realiza WordPress en centésimas de segundo si tu servidor es potente y tiene los recursos suficientes, pero aún así es un procedimiento poco eficiente, porque consume recursos repetidamente de manera innecesaria.

Y es innecesaria porque ese proceso – salvo que intervengamos – lo realizará para cada visita a cada URL, da igual si ha generado la misma página hace medio segundo, si hay otra visita, otro hit a la misma URL, WordPress hará el mismo proceso de nuevo desde cero.

Ahora imagina miles de visitas simultáneas a la misma URL… ¿hará WordPress las consultas pertinentes una sola vez y entregará el resultado a todas las visitas una sola vez?, pues no, sin caché no.

Este procedimiento no es nada sostenible, y el motivo por el que todo CMS, incluido WordPress, debe usar sistema(s) de caché, sí o sí.

¿Qué hace la caché?

Hace no mucho leí por ahí ( cuando digo «por ahí», casi siempre me refiero a Twitter, X, o como tu lo llames) que la caché oculta los problemas de rendimiento de una página, como si tener caché fuese algo malo en sí mismo, y de hecho así lo entendieron varios usuarios que leyeron ese mensaje.

Y el mensaje tiene trampa, por supuesto…

La caché no arregla ningún proceso poco eficiente en la carga de una página, hasta ahí estamos de acuerdo, porque la caché no sirve para eso, pero no debemos asumir que una web WordPress debe entregarse sin usar caché, eso nunca (bueno, casi nunca, sino este artículo no tendría sentido), ¿por qué?

Por mucho que una página utilice de forma inadecuada recursos, sea lenta por su mala programación o lo que sea, al almacenarla en caché todos esos problemas quedan para otro momento, el HTML resultante del proceso de caché, estático, no se ve afectado por esos problemas dinámicos, simplemente entrega el contenido final, creado una vez, mostrado miles de veces, tantas como sea reclamado por los visitantes.

Porque el objetivo de los sistemas de caché es evitar ese procedimiento tan poco eficaz y sostenible de generar cada página de la web en tiempo real a cada visita, creando una vez el HTML que hay que entregar a los visitantes en su navegador, y a partir de ese momento ya no se harán consultas por cada URL a la base de datos en cada visita, sino que WordPress entregará el HTML previamente creado por el sistema de caché, liberando así al motor de WordPress y a la base de datos de miles, quizás millones de consultas.

Da igual lo bueno que seas optimizando WordPress, el servidor, la base de datos o lo que sea de tu web, si no utilizas caché estás malgastando innecesariamente recursos del servidor, y entregando siempre páginas más lentas de tu web, por muy optimizadas que estén, que si usases un sistema de caché. Por muy experto que seas optimizando webs si no usas WordPress no estás siendo eficiente.

¿Por qué querría entonces querer desactivar las cachés?

Bien, llegamos al meollo de la cuestión, y espero me perdones la larga introducción, pero considero que todo superpoder requiere también del conocimiento de las consecuencias del uso del mismo, y saber gestionar correctamente las cachés es un superpoder.

Por este motivo, antes de llegar al punto de aprender a desactivar las cachés en WordPress, o cualquier otra web, he considerado importante que sepas los porqués, para que igualmente tengas el conocimiento requerido a la hora de decidir cómo, cuándo y para qué desactivar una caché, si fuese necesario.

Y es que hay situaciones en las que puede ser interesante desactivar las cachés, otros en las que puede ser importante, y hasta en algunas ocasiones puede llegar a ser imprescindible, ¿vemos ejemplos?:

  • Desarrollando una nueva web, plugin o tema – Mientras creas una nueva web o aplicación debes ser consciente de cada proceso, cada recurso utilizado, para depurar y corregir cualquier error antes de que quede opacado mediante la caché. Debes hacer un desarrollo lo más óptimo posible, independientemente de los sistemas de caché que luego el cliente decida utilizar, porque es su elección, no la tuya.
  • Diseñando o maquetando una web – Por el sencillo motivo de que la caché no te va a mostrar en tiempo real los cambios de diseño que hagas, mientras diseñas siempre deberías tener todas las cachés inactivas.
  • Optimizando webs – Pues sí, también, porque si vas a optimizar una web debes hacerlo en base a los recursos que tenga, mejorando los procesos, sustituyendo unos por otros, optimizando las consultas, lo que haga falta, para al final del todo, utilizar los sistemas de caché para optimizar la entrega, como ya sabes a estas alturas.
  • Asegurando webs, hay situaciones en que debes evitar las cachés para poder ver y analizar en tiempo real el código de las páginas del sitio, para detectar virus, malware, etc.

Cómo desactivar cachés en WordPress

Ahora que ya sabemos el qué, el porqué y algunos de los posibles «para qué», vamos al lío. Aquí te dejo varias maneras de desactivar las cachés de WordPress, según tu necesidad.

Desactivar la caché desde wp-config.php

Puedes desactivar las cachés añadiendo esta línea al archivo wp-config.php, normalmente situado en la carpeta raíz de la instalación de WordPress:

define ('WP_CACHE', false);

Si ya estuviese la línea, pero con el valor true, simplemente cámbialo a false y guarda los cambios.

Desactivar la caché desde .htaccess

Si tu web está alojada en un hosting que usa el servidor Apache, lo más habitual, hay varios comandos que puedes añadir al archivo de configuración .htaccess para desactivar cachés.

Desactivar completamente la caché

<IfModule mod_headers.c>
Header set Cache-Control "private"
</IfModule>

Desactivar la caché de una página concreta

<If "%{THE_REQUEST} =~ m#/slug-de-la-pagina#">
<IfModule mod_headers.c>
Header set Cache-Control "private"
</IfModule>
</If>

Desactivar la caché para ciertos tipos de archivo

<IfModule mod_headers.c>
<FilesMatch ".(js|css|xml|png|jpg|jpeg|html)$">
Header set Cache-Control "private"
</FilesMatch>
</IfModule>

Desactivar COMPLETAMENTE la caché desde .htaccess

El siguiente código debería desactivar las cachés del todo en un servidor Apache:

<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>

Desactivar la caché desde web.config

Si tu web está alojada en un hosting que usa el servidor Windows ASP, IIs o .NET entonces usará el archivo web.config, y lo que debes añadir para desactivar completamente las cachés es lo siguiente:

<configuration>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache, no-store, must-revalidate" />
<!-- HTTP 1.1. -->
<add name="Pragma" value="no-cache" />
<!-- HTTP 1.0. -->
<add name="Expires" value="0" />
<!-- Proxies. -->
</customHeaders>
</httpProtocol>
</system.webServer>

Desactivar la caché desde nginx.conf

Si tu servidor utiliza NGinX entonces puedes desactivar sus cachés editando el archivo nginx.conf y añadiendo las líneas siguientes en color rojo:

server {
listen 8080;
server_name localhost;

location / {
root /your/site/public;
index index.html;

# kill cache
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires off;
etag off;
}
}

¡Ya está! Espero haberte ayudado, primero a comprender cómo funciona esto de los sistemas de caché que usa WordPress, y por supuesto, a desactivarlos en caso de necesidad.

Compártelo en tus redes
Resúmelo con tu IA

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en las estrellas para valorarlo!

Promedio de puntuación 4.7 / 5. Total de votos: 13

¡Todavía no hay votos! Sé el primero en valorar este contenido.

Ya que has encontrado útil este contenido...

¡Sígueme en las redes sociales!

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!



Sobre el autor

8 comentarios en “Cómo desactivar la(s) caché(s) completamente en WordPress”

  1. Gracias de nuevo por este truco para los que pensamos que lo sabemos todo.
    Solo una duda.
    Me gusta la opción de wp-config, creo que será la más eficaz define (‘WP_CACHE’, false);
    Pero,
    ¿seria igual de efectivo si lo hacemos desde el panel de SiteGround? Es un poco ridícula la preguntita…
    ¡¡Gracias!!

  2. En el articulo mencionas dos códigos distintos para desactivar la cache completamente desde .htaccess. Que diferencia hay y cual de los dos es el que habria que usar?

  3. Buena recopilación, para ciertos sitios o durante desarrollo es importante tenerlo en cuenta.
    Solo me queda la duda de otras caches como la de base de datos, ¿a ese nivel algún tipo de consulta cacheada puede afectar a WordPress?

  4. Me refería a la caché de base de datos, pero la del propio MariaDB/MySQL, si puede afectar a WordPress, ya que además no se suele tener ningún control sobre esa parte.

Los comentarios están cerrados.

Scroll al inicio