Contenido

1BlogCacher, plugin para cachear WordPress

12 sep

+ 19

Por problemas técnicos he vuelto a hacer las pruebas, al parecer wp-cache no quería desactivarse e interfería en los resultados de 1BlogCacher. Siento las molestias. 

Guillermo Carvajal de La brujula verde, nos muestra hoy 1BlogCacher, un sistema de cacheo para WordPress basado en WP-Cache y HTML Cache Creator.

En general la idea de 1BlogCacher, es la misma que los plugins anteriores, evitar que el servidor tenga que volver a realizar todas las peticiones que componen el proceso de creación de una página. Cada vez que llegamos a un blog (a cualquier entrada), este realiza una serie de comprobaciones, consultas a la base de datos, operaciones de transformación,… para mostrarnos el resultado, estos plugins evitan eso almacenando una página HTML con el resultado de la primera visualización.

El sistema de caché a groso modo funciona de la siguiente forma:

Si fichero_cacheado existe
 	mostrar fichero
sinó existe
	crear página
	almacenar en fichero_cacheado
fin si
 

Evidentemente, podemos poner comprobaciones, como el tiempo que tiene el fichero_cacheado o si queremos un sistema de borrado de caché,… para completar y perfeccionar el sistema.

1BlogCacher 

 Copio y pego las características directamente de la página del plugin.

  • Compatible con WordPress 1.5 y superiores (probado en 1.5, 2.0, 2.1 y 2.2).
  • Instalación/configuración rápida y sencilla.
  • Portable: edita el archivo para tu conveniencia y úsalo en cualquier sitio.
  • Los archivos cacheados se guardan en archivos HTML, y se organizan en directorios que emulan las urls, así que es fácil mostrar el contenido de los archivos y organizarlos (por ejemplo borrar la caché de una entrada específica, de todas las categorías. de todas las búsquedas, de todas las entradas de una fecha determinada, etc.)
  • Si «safe_mode» está habilitado, el plugin todavía funcionará, creando todos los archivos en el directorio de caché.
  • Opción para borrar todos los archivos cacheados (o sólo los espirados) desde el panel de WordPress.
  • Tiempo de expiración para los archivos cacheados.
  • Cadenas de texto aceptadas y rechazadas para controlar exactamente las urls a cachear.
  • User Agents rechazados para evitar sobre-cacheado proveniente de buscadores.
  • Los archivos cacheados (incluyendo la caché de la página inicial) serán actualizados cuando las entradas y los comentarios serán publicados/editados/borrados.
  • Opción de incluir un encabezado «Expires» para habilitar la caché del navegador (una velocidad de respuesta aún más rápida y menos peticiones de página.
  • Sólo las peticiones GET serán cacheadas.
  • Los usuarios registrados no ven páginas cacheadas.
  • La super-recarga del navegador (Ctrl+F5) evita las urls cacheadas.
  • Compatible con la compresión Gzip.

Instalación

La instalación es igual a la de cualquier plugin para WordPress, siendo así más fácil que la necesaria para disfrutar de WP-Cache.

  1. Descargar el fichero
  2. Descomprimir y editar si es necesario (tiene una serie de defines para personalizar su ejecución).
  3. Subir al directorio wp-content/plugins/
  4. Crear un directorio (previamente definido en el fichero) con permisos 777.
  5. Activar y disfrutar.

1BlogCacher vs Wp-Cache

He estado haciendo unas pruebas de rendimiento, bastante rudimentarias, con las que hacernos una idea de las ventajas que en este punto nos pueden ofrecer estos plugins.

Escenario

 Para hacer las pruebas, he usado este blog (http://www.anieto2k.com) eliminando la caché generada por cada plugin en cada una de las pruebas. Las pruebas se han realizado con ab, aplicación que nos permite hacer benchmark de sitios web, desde el macbook y con las mismas características para los dos plugins.

ab -n100 -c5 http://URL/

Lanzamos 100 peticiones de 5 usuarios recurrentes. 

Se han realizado 2 pruebas, 1 sobre el index, tanto para wp-cache como para 1BlogCacher. Y otra sobre un post al azar (el mismo para los dos plugins).

Estos son los resultados para la prueba sobre el index

 

//1BlogCacher

ab -n100 -c5 http://www.anieto2k.com/
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.anieto2k.com (be patient).....done
Server Software:        Apache/2.2.4
Server Hostname:        www.anieto2k.com
Server Port:            80

Document Path:          /
Document Length:        33758 bytes

Concurrency Level:      5
Time taken for tests:   46.032 seconds
Complete requests:      100
Failed requests:        0
Broken pipe errors:     0
Total transferred:      3428468 bytes
HTML transferred:       3398673 bytes
Requests per second:    2.17 [#/sec] (mean)
Time per request:       2301.60 [ms] (mean)
Time per request:       460.32 [ms] (mean, across all concurrent requests)
Transfer rate:          74.48 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:      170   399  363.0    351  2899
Processing:  1161  1813  355.6   1771  3026
Waiting:      917  1813  355.3   1770  3026
Total:       1161  2212  461.4   2134  4123

Percentage of the requests served within a certain time (ms)
  50%   2134
  66%   2244
  75%   2359
  80%   2396
  90%   2780
  95%   3212
  98%   4078
  99%   4123
 100%   4123 (last request)


//Wp-Cache

ab -n100 -c5 http://www.anieto2k.com/
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.anieto2k.com (be patient).....done
Server Software:        Apache/2.2.4
Server Hostname:        www.anieto2k.com
Server Port:            80

Document Path:          /
Document Length:        30919 bytes

Concurrency Level:      5
Time taken for tests:   49.596 seconds
Complete requests:      100
Failed requests:        99
   (Connect: 0, Length: 99, Exceptions: 0)
Broken pipe errors:     0
Total transferred:      3132229 bytes
HTML transferred:       3095767 bytes
Requests per second:    2.02 [#/sec] (mean)
Time per request:       2479.80 [ms] (mean)
Time per request:       495.96 [ms] (mean, across all concurrent requests)
Transfer rate:          63.15 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:       95   380  138.9    381   693
Processing:   888  1938  555.4   1852  4088
Waiting:      650  1938  555.4   1852  4088
Total:        888  2318  585.3   2223  4492

Percentage of the requests served within a certain time (ms)
  50%   2223
  66%   2406
  75%   2519
  80%   2588
  90%   2827
  95%   3846
  98%   4296
  99%   4492
 100%   4492 (last request)

Como podemos ver wp-cache, demuestra ser un poco más rápido sirviendo el HTML. Aunque en las pruebas me ha llamado la atención que wp-cache devolviera 99 request fallidas (de 100) frente a las 100 peticiones correctas obtenidas por 1BlogCacher.

En las nuevas pruebas, sin la interferencia de wp-cache en los resultados, vemos que 1BlogCacher obtiene mejores resultados, mejorando en 3 segundos la respuesta a 100 peticiones de 5 usuarios simultaneos.

En el post aleatorio (enlace al post)

//1BlogCacher

ab -n100 -c5 http://www.anieto2k.com/2007/08/09/el-html-de-los-futuros-blogs-html5/
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.anieto2k.com (be patient).....done
Server Software:        Apache/2.2.4
Server Hostname:        www.anieto2k.com
Server Port:            80

Document Path:          /2007/08/09/el-html-de-los-futuros-blogs-html5/
Document Length:        20277 bytes

Concurrency Level:      5
Time taken for tests:   33.878 seconds
Complete requests:      100
Failed requests:        0
Broken pipe errors:     0
Total transferred:      2087468 bytes
HTML transferred:       2050136 bytes
Requests per second:    2.95 [#/sec] (mean)
Time per request:       1693.90 [ms] (mean)
Time per request:       338.78 [ms] (mean, across all concurrent requests)
Transfer rate:          61.62 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:      136   325  302.2    295  3160
Processing:   982  1334  411.4   1231  3056
Waiting:      798  1333  411.3   1231  3055
Total:        982  1658  505.0   1544  4324

Percentage of the requests served within a certain time (ms)
  50%   1544
  66%   1623
  75%   1730
  80%   1860
  90%   2329
  95%   2518
  98%   3520
  99%   4324
 100%   4324 (last request)

//wp-cache

ab -n100 -c5 http://www.anieto2k.com/2007/08/09/el-html-de-los-futuros-blogs-html5/
This is ApacheBench, Version 1.3d <$Revision: 1.73 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-2002 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.anieto2k.com (be patient).....done
Server Software:        Apache/2.2.4
Server Hostname:        www.anieto2k.com
Server Port:            80

Document Path:          /2007/08/09/el-html-de-los-futuros-blogs-html5/
Document Length:        20307 bytes

Concurrency Level:      5
Time taken for tests:   31.626 seconds
Complete requests:      100
Failed requests:        96
   (Connect: 0, Length: 96, Exceptions: 0)
Broken pipe errors:     0
Total transferred:      2064186 bytes
HTML transferred:       2027816 bytes
Requests per second:    3.16 [#/sec] (mean)
Time per request:       1581.30 [ms] (mean)
Time per request:       316.26 [ms] (mean, across all concurrent requests)
Transfer rate:          65.27 [Kbytes/sec] received

Connnection Times (ms)
              min  mean[+/-sd] median   max
Connect:      104   282   98.9    285   524
Processing:  1050  1290  329.2   1235  2531
Waiting:      807  1290  329.1   1234  2532
Total:       1050  1572  326.6   1517  3014

Percentage of the requests served within a certain time (ms)
  50%   1517
  66%   1595
  75%   1662
  80%   1712
  90%   1929
  95%   2332
  98%   2593
  99%   3014
 100%   3014 (last request)

En la prueba de un post, obtenemos los mismo resultados. Wp-Cache es más rápido sirviendo el HTML pero es curioso obtener 96 de 100 peticiones fallidas.

En las nuevas pruebas los resultados han sido similares, wp-cache muestra más rápido las respuestas de HTML para entradas concretas.  

Conclusiones

Los resultados son bastante similares, teniendo una diferencia de 2-3 segundos en los tests realizados. Esto puede ser debido al sistema de directorios que 1BlogCacher crea para almacenar los fichero cacheados y las comprobaciones para que los usuarios registrados no perciban el cacheo de páginas. Estas mejoras que diferencian un plugin de otro marcan la diferencia y nos obliga a sopesar si creemos necesario sacrficar 2 seg (en 100 peticiones) para disfrutar de las opciones que 1BlogCacher nos ofrece. O por otro lado, quizas nos interese carecer de ciertas funcionalidades y server las páginas algo más rápido.

Viendo los resultados obtenidos por la segunda tanda de pruebas, wp-cache empieza a verle las orejas al lobo con un competidor de altura. Un script realmente sencillo de instalar y que rinde de forma similar o en algunos casos mejor. Sin duda estamos frente a un script que va a dar mucho que hablar. 

Personalmente, voy a darle un vote de confianza a 1BlogCacher y lo voy aprobar un tiempo para ver que tal se porta.

Disculpas

Por motivos que aún desconozco, al hacer las pruebas, wp-caché no terminaba de desinstalarse y se estaba re-cacheando el resultado, ocasionando problemas y datos poco fiables para 1BlogCacher. Siento todas las molestias ocasionadas y sobretodo le pido disculpas a Javier por no haber hecho las pruebas más estrictamente.

Actualización:
Alex de Buyacorp hace nuevas pruebas y obtiene resultados bastante interesantes.

  • Hola Andrés,

    Gracias por hablar del plugin. Tan sólo voy a hacer una matización. Has medido la respuesta a 100 peticiones del mismo usuario. Por la forma que tiene 1 Blog Cacher de cachear las páginas (sin variables de entorno), el plugin usa versiones cacheadas más a menudo.

    Lo que quiero decir es que si en vez de medir 100 peticiones del mismo usuario se pudiera medir 100 peticiones de diferentes usuarios (logueados, no logueados, comentadores, no comentadores…) el rendimiento sería superior.

    Por cierto, ahora mismo tienes los 2 plugins activados, así que básicamente 1 Blog Cacher está cacheando lo que ya ha cacheado anteriormente WP-Cache (además de añadir el tiempo de ejecución) :P

  • La ventaja, en mi parecer, es la posibilidad de tener activado simultáneamente gzip, lo que debiera incrementar la velocidad de carga de las páginas.

    ¿Has evaluado la eficiencia de los plugins con gzip habilitado y sin habilitar?

  • Javier, solo tengo 1BlogCacher activado, wp-cache está desactivado ahora mismo.

  • Pues si ves el código de las páginas:

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

    Además ocurren cosas como que la caché de una entrada no se refresca al enviar un comentario, y eso seguro que es cosa del WP-Cache que está interfiriendo.

  • Javier, no veo eso en el código.

    Me parecía muy raro, ya que he borrado toda la caché (de los dos) y solo tengo 1BlogCacher activado.

    Por ahora parece que está funcionando perfectamente.

    Enhorabuena por el trabajazo.

  • Ahora ya no se devuelve ese código. Pero antes podías ver ese código (y no era una caché antigua, el tiempo de ejecución variaba así que el WP-Cache se estaba ejecutando).

    De hecho podías ver al final del HTML 4 líneas de comentarios, las 2 del WP-Cache y las 2 de 1 Blog Cacher.

    Si repites el test ahora que WP-Cache no se está ejecutando a lo mejor te encuentras alguna sorpresa :)

  • Que bueno que exista una alternativa a Wp-Cache… pero quien sabe si 1Blog Cacher funciona en hosting de GoDaddy??? Ya que Wp-Cache no y hasta ahora no tengo ningun plugin de cacheo para mi wordpress.

  • Excelente review, espero que te vaya bien y nos cuentes, dentro de 1 semana, tu experiencia con 1BlogCacher

  • Javier, corregido.

    Siento las molestias ;)

  • Gracias Andrés,

    Repetir la prueba te honra :)

    Aunque aún mantienes algunas frases de la prueba anterior “Wp-Cache es más rápido sirviendo el HTML pero es curioso obtener 96 de 100 peticiones fallidas.”.

    Saludos

  • Como desinstalaste wp-cache? lo desactivaste y lo quitaste del wp-config.php?

  • Vete al wp-config.php y cambia la línea de wp-cache a false

  • Exactamente, desactive el plugin y comenté la línea de wp-caché del fichero wp-config. Pero la primera vez no se desactivó. Misterios de wp.

  • No es un misterio, cuando se ejecuta el advanced-cache, el WP-Cache no tiene ninguna forma de saber si el plugin está activo o no, así que sigue usando las cachés que no estén caducas. Hasta que no pase el tiempo de expiración de la caché, sigue usándolas incluso después de desactivado.

    En realidad sigue ejecutando código incluso después, mientras esté ahí el advanced-cache.php.

  • Hola Andres tal ves esta pregunta no venga al caso. Pero tengo el WP-Cache activado y tambien el plugin MoreMoney y no he logrado que funcione dinamicamente el moremoney. Veo que tu lo estas utilizando me podrias guiar para poder hacer que funcione….

    Saludos…

  • Hola Amigos, vengo usando este plugin dese hace un año aprox, me ha dado muy buenos resultados, el mysql trabaja muy liberado desde entonces.

    Mi configuracion optima hasta el momento con 1blogcacher ha sido dejar el tiempo de expiracion de 3600 segundos por defecto a 28800 segundos

    Saludos…

    Daniel

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.