Cualquier web dinámica debe utilizar un sistema de caché que libere en parte los accesos a la base de datos. Con este sistema, el servidor web almacena una copia estática de cada una de las páginas tras una primera carga de cada una de ellas. En WordPress existen varios plugins que se ocupan de este trabajo, destacando dos en la lista, el veterano WP Super Cache y el cada vez más usado W3 Total Cache. En Batiburrillo.net y blogs allegados hemos utilizado ambos. Últimamente nos habíamos decantando por el segundo, W3 Total Cache, a pesar de tener que luchar constantemente con las opciones de configuración.
Hasta hace sólo tres días teníamos activado dicho plugin, utilizando las opciones estándar, las que recomiendan en el sitio de soporte del plugin y confirman unos cuantos expertos. Desde hace algún tiempo, tal vez desde la última actualización del plugin, veníamos observando en los logs de errores del servidor que se producían una gran cantidad sin motivo aparente, que traían consigo problemas de cargas en el sitio, con repetitivos errores internos del servidor (Error 500). A pesar de contactar con el soporte de nuestro proveedor de hosting, no pudimos averiguar en donde radicaba el fallo, aunque ellos lo achacaban a un script. Hasta que decidimos desactivar W3 Total Cache.
Como no queríamos quedarnos sin un plugin de caché, decidimos instalar WP Super Cache, y los fallos y errores desaparecieron. El log de errores del servidor está ahora vacío y la carga de las páginas sigue en las mismas pautas, mostrando los mismos o mejores resultados en los servicios que se ocupan de medir los tiempos de carga y demás.
No hemos hecho nada especial en la configuración del plugin. Tras activarlo, hemos marcado las opciones recomendadas (Recommendedi) en la pestaña Avanzado, actualizado el estado y las reglas Mod_rewrite. En Cache timeout pusimos 3600 segundos. Activamos el mismo CDN que teníamos en W3 Total Cache, en Preload activamos, tal como se recomienda, el Preload mode y lo fijamos cada 10800 minutos.
Con el fin de incrementar la velocidad del sitio añadimos en la parte superior del archivo .htaccess las instrucciones que regulan mod_expires y mod_headers:
# Turn on Expires and set default to 0 ExpiresActive On ExpiresDefault A0 # Set up caching on media files for 1 year (forever?) <FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> ExpiresDefault A29030400 Header append Cache-Control "public" </FilesMatch> # Set up caching on media files for 1 week <FilesMatch "\.(gif|jpg|jpeg|png|swf)$"> ExpiresDefault A604800 Header append Cache-Control "public" </FilesMatch> # Set up 2 Hour caching on commonly updated files <FilesMatch "\.(xml|txt|html|js|css)$"> ExpiresDefault A7200 Header append Cache-Control "proxy-revalidate" </FilesMatch> # Force no caching for dynamic files <FilesMatch "\.(php|cgi|pl|htm)$"> ExpiresActive Off Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" Header set Pragma "no-cache" </FilesMatch>
Enlace | WP Super Cache