Cuando una página web o blog crece en popularidad y visitas, también aumenta de manera proporcional la cantidad de recursos que precisa del servidor donde se encuentra alojada. Esto se traduce en mayor uso de memoria RAM, mas tiempo de uso de CPU, mas disco duro, etc.wordpress27

¿Que ocurre cuando se da esta circunstancia? Pues generalmente lo que ocurre es que la empresa donde tenemos alojado el blog o sitio dinámico nos dará un toque de atención(a veces con la suspensión momentánea de la cuenta) avisando para que reduzcamos el consumo de recursos de alguna manera si no queremos que nos echen, o bien nos obliguen a actualizar a un plan mayor o incluso contratar un servidor dedicado para nuestra web.

Con el fin de retrasar lo máximo posible ese momento podemos recurrir a un sistema de cacheo que sirva versiones estáticas de nuestras páginas, disminuyendo el consumo de recursos y aumentando la respuesta del sitio, para así evitar morir de éxito por un inesperado pico de visitas, por ejemplo cuando nuestro sitio es mencionado en un medio importante, o por el bien conocido efecto menéame.

Algunos CMS como Joomla tienen un sistema de cacheo en su configuración básica, sin embargo WordPress carece de esta capacidad y para salvarnos de ser sacrificados por el hosting por el consumo de ciclos de reloj, debemos instalar algún sistema de cacheo ya que este CMS realiza unas 20 consultas a la base de datos para mostrar una página.

¿Que es el cache?
Supongamos que un lector de nuestra web se levanta por la mañana y mientras toma el desayuno lee los últimos artículos publicados, WordPress ejecutara todas las peticiones a la base de datos utilizando cerca de 1 segundo de CPU para devolver el código de la página al navegador, mientras hace esto, el plugin de cache crea una copia estática en HTML y la guarda en una carpeta del servidor. Cuando un segundo usuario pida la misma página, el plugin devolverá la copia estática ahorrando valiosos recursos, y aumentando a la vez hasta en un 300% la velocidad de respuesta de nuestra web.

Hay tres plugins populares para cache en WordPress: WP-Cache, 1Blog Cacher y WP Super Cache. Voy a hablar solo de los primeros 2, ya que solucione el inconveniente antes de probar el tercero.

1.- WP-Cache de Ricardo Galli.
Los resultados de este plugin en un blog con 5000 visitas únicas diarias son espectaculares. Es con mucho el mas utilizado por la gente y por tanto el mas conocido, pero no es el que he elegido en esta ocasión.

Luego de descargar y descomprimir el plugin, copiamos la carpeta al directorio /plugins en nuestro servidor, ingresamos al área de administración de WordPress y activamos WP-Cache. Luego vamos a Opciones -> WP-Cache y lo habilitamos (Enable It). En la misma página podemos configurarlo, por defecto guarda el cache 3600 segundos (1 hora), aún no tengo claro si conviene configurarlo por mas de 2 horas, sin embargo las modificaciones de artículos, comentarios y nuevos artículos borran la pagina del cache, así que no habrá ningún problema incluso si configuramos una cache de 20 horas.

Cuando accedemos a una página por primera vez en el pie del codigo fuente podemos leer un comentario como este:

<!– Dynamic Page Served (once) in 0.697 seconds –>

Y al volver a solicitarla nos muestra la cache:

<!– Dynamic Page Served (once) in 0.697 seconds –>
<!– Cached page served by WP-Cache –>

El único inconveniente que le encontré a este plugin es que duplica la cache para los usuarios registrados y para algunas combinaciones de sistema operativo/navegador, encontré los siguientes casos de cache duplicada que pude comprobar por el comentario al pie del código fuente:

1.- Cache de usuario registrado
2.- Cache para Konqueror + GNU/Linux
3.- Cache para Firefox + GNU/Linux
4.- Cache para IE6 y Firefox en XP SP2
5.- Cache para IE7 y Firefox en XP SP3

No pude ver lo que sucedía con Windos Vista y otros sistemas, pero encontré que guardaba al menos 5 copias de la misma página, según la solicitaran esas configuraciones.

2.- 1Blog Cacher de Javiér Garcia.
Es la opción mas reciente y la que elegí en esta ocasión.
Me dí cuenta cuenta gracias a alguna pruebas que los resultados que se obtienen con este plugin están a la altura de WP-Cache e incluso en determinadas ocasiones lo supera. 1Blog Cacher está basado en WP-Cache, pero no es un simple clon de WP-Cache si no que está dotado de nuevas características, las cuales espero ayuden a retrasar lo máximo posible el temido paso a un servidor dedicado.

Luego de descargar y descomprimir el plugin, editamos el archivo advanced-cache.php

define(“OBC_EXPIRATION”,72000); // número de segundos (3600 por defecto = 1 hora)
define(“OBC_CACHE_USERS”,1); // 1: Usar una única caché global
define(“OBC_CACHE_COMMENTERS”,1);
define(“OBC_CACHE_ERROR_PAGES”,false);
define(“OBC_CACHE_REDIRECTIONS”,false);
define(“OBC_AVOID_TRAILING_SLASH_DUPLICATION”,false);
define(“OBC_ENABLE_BROWSER_CACHE”,true); // permitir que el navegador de los visitantes cachee los contenidos
define(“OBC_LOOK_FOR_DYNAMIC_CODE”,true);
define(“OBC_USE_CACHE_DIRECTORIES”,true);
define(“OBC_REJECTED_STRINGS”,”wp-”);
define(“OBC_ACCEPTED_STRINGS”,”wp-atom.php, wp-comments-popup.php, wp-commentsrss2.php, wp-links-opml.php, wp-locations.php, wp-rdf.php, wp-rss.php, wp-rss2.php”);
define(“OBC_REJECTED_USER_AGENTS”,”bot, ia_archive, slurp, crawl, spider”);

* Creamos el directorio de cache /wp-cache/ en el directorio de WordPress, y le damos permisos de escritura (chmod 777).
* Subimos el archivo 1blogcacher2.0es.php al directorio /wp-content/plugins/ de WordPress.
* Subimos el archivo advanced-cache.php al directorio /wp-content/
* Añadimos esta línea al archivo wp-config.php: define(‘WP_CACHE’, true);
* Desde el panel de administración de WordPress activamos el plugin y miramos que funcione correctamente en “Opciones -> 1 Blog Cacher” en el panel de WordPress.

Luego algunas pruebas veo que con esta configuración se resuelve el problema de las páginas duplicadas, pero noto un nuevo problema, al utilizar los enlaces permanentes con la estructura /2009/02/21/sample-post/, si se escribe el enlace sin la barra / final la pagina no se muestra, cosa que no pasaba antes.

Para solucionar este inconveniente agregue unas lineas al inicio del archivo .htaccess que esta dentro del directorio de WordPress:

Options +Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^misitio\.com\.ar
RewriteRule ^(.*)$ http://www.misitio.com.ar/$1 [R=permanent,L]

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.misitio.com.ar/$1/ [L,R=301]

Este código hará una redirección de cualquiera de estos cuatro casos:
http://www.misitio.com.ar/sample-post

http://www.misitio.com.ar/sample-post/

http://misitio.com.ar/sample-post

http://misitio.com.ar/sample-post/

A: http://www.misitio.com.ar/sample-post/
Solucionando con esto el problema de la url sin barra final.

Una última prueba en varios navegadores y sistemas me muestra la misma página cacheada en todos ellos:

<!– Cargado originalmente en 0.42 segundos (2009-02-21, 20:00:59). –>
<!– Cargado de cache en 0.0152 segundos por 1 Blog Cacher – http://es.1blogcacher.com/ – (2009-02-21, 20:01:57) –>

 

4 Comentarios para “Plugins de cacheo para WordPress”

  1. Trafico web Says:

    gracias amigo por el post vere con cual me va mejor, ya que el numero de visitas son muchqas en mi sitio.

  2. Lucas Says:

    Parecería que el cambio que hacés en .htaccess en la versión actual del plugin ya no es necesario. Lo probé sin haberlo hecho y funcionó bien.
    ¡Gran nota!

  3. Lucas Says:

    Sabés qué? Segunda vez que instalo el cache… y segunda vez que leo tu tutorial.
    Y debo reconocer que esta vez estuve menos atento, y me mandé un par de cagadas :P

  4. admin Says:

    Jajaja, hace mucho que no entro… la verdad queda un poco mal que el admin diga que no entra al sitio :P
    Tengo un monton de material para postear y nada de tiempo. en cuanto tenga un día disponible agrego 15 o 20 posts nuevos.
    Saludos!

Deja un comentario

Desarrollado por AnimacionyWeb     Stats