
En este tutorial, explicaré cómo configurar el almacenamiento en caché fastcgi con WordPress para almacenar en caché páginas generadas con PHP con el fin de aumentar la velocidad de un sitio de WordPress y reducir la carga del servidor.
Con la activación del cache fastcgi las páginas generadas en PHP serán cacheadas a nivel de Nginx, con este cacheo cuando la página sea llamada y esté en el cache se serviría directamente sin generar código PHP y por tanto consultas SQL.
Para aprovechar plenamente esta solución, el sitio debe ser accesible principalmente en modo «invitado» sin autenticación.
Aquí vamos, aquí están las líneas de configuración para agregar:
En la parte http{ … } del archivo nginx.conf o en el archivo de host virtual del sitio con el bloque de servidor { … }, agregue las siguientes líneas que le permitirán declarar el caché en el nivel de Nginx.
# fastcgi cache
fastcgi_cache_path /var/cache/nginx levels=1:2 keys_zone=wpcache:200m max_size=10g inactive=2h use_temp_path=off;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
- fastcgi_cache_path : especifica la ubicación de la caché y los parámetros de la caché
- keys_zone : El atributo define el nombre de la caché y el tamaño del área de memoria compartida. 200 m son suficientes para almacenar más de un millón de claves.
- max_size : tamaño máximo de caché en el disco
- inactive : Duración de la caché cuando no está en uso, aquí 2 horas
- fastcgi_cache_key : permite generar el identificador de caché (clave)
- fastcgi_ignore_header : le permite deshabilitar el caché en función de ciertos encabezados HTTP.
Lo siguiente debe agregarse en la parte del servidor {…} del virtualhost.
Se pueden especificar excepciones cuando no se debe utilizar la caché:
set $skip_cache 0;
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|^/feed/*|/tag/.*/feed/*|index.php|/.*sitemap.*\.(xml|xsl)") {
set $skip_cache 1;
}
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
En la sección que trata sobre la ejecución del código PHP agregue las siguientes líneas:
location ~ \.php$ {
...
fastcgi_cache wpcache;
fastcgi_cache_valid 200 301 302 2h;
fastcgi_cache_use_stale error timeout updating invalid_header http_500 http_503;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-FastCGI-Cache $upstream_cache_status;
}
- fastcgi_cache : Habilite el caché y especifique el nombre del caché a utilizar
- fastcgi_cache_valid : determina la duración de la memoria caché según el código HTTP
- fastcgi_cache_use_stale error : Determina las condiciones en las que Nginx debe servir contenido obsoleto.
- fastcgi_cache_min_uses : Determina cuándo se debe utilizar la caché en función de la cantidad de solicitudes..
- fastcgi_cache_lock : comportamiento para solicitudes concurrentes.
- fastcgi_cache_bypass : Omisión de caché mediante la variable $skip_cache
- fastcgi_no_cache : Omisión de caché mediante la variable $skip_cache
Pruebe la configuración de Nginx:
sudo nginx -tSi no hay ningún error, recargue la configuración:
sudo systemctl reload nginxPara probar la función de caché, vaya al sitio de WordPress como visitante registrado y abra las herramientas para desarrolladores del navegador (F12).
Vaya a una página del sitio y mire los encabezados de respuesta.

Como es la primera carga de página, el caché no está disponible (MISS) mirando el encabezado X-Fastcgi-Cache.
Recargar la página:

Esta vez se utilizó el caché y podemos verlo con el encabezado X-Fastcgi-Cache que está configurado en HIT.
Para finalizar este tutorial, explicaré cómo purgar la caché. En WordPress, existe un plugin llamado Nginx Helper que permite administrar la caché Fastcgi de Nginx. Para ello, se necesita el módulo libnginx-mod-http-cache-purge. Esta solución funciona en una instalación estándar.
Ya sea que esté en un contenedor o no, la forma más fácil de purgar el caché es purgar la carpeta de caché y volver a cargar la configuración de Nginx:
rm -rf /etc/nginx/cache/
/etc/init.d/nginx reload
Ahora ya sabes cómo configurar el caché Fastcgi en Nginx para WordPress.
