Duplicar la velocidad de wordpress en 5 minutos

El almacenamiento en cache es una técnica muy empleada que arroja importantes mejoras de rendimiento y requiere de muy poco esfuerzo.

Los tipos de cache se pueden dividir en dos grupos principales, cache del lado del servidor (opcodes, bases de datos, etc) y del lado del cliente cliente (imágenes, hojas de estilos, ficheros js).

NOTA: Las siguiente optimizaciones han sido realizadas sobre wordpress pero son perfectamente aplicables a cualquier aplicación php.

Cache del lado del servidor

Lo primero será instalar algún optimizador de código php. Ya hemos hablado varias veces de este tipo de soluciones así que no me voy a complicar demasiado. Simplemente decir que APC y eAccelerator son buenas alternativas.

Cache del lado del cliente

En la mayoría de los casos, queremos que nuestros cliente caché de nuestros archivos estáticos como HTML y CSS para que el sitio cargue más rápido después de la primera solicitud. El almacenamiento en caché del navegador depende por lo general de las cabeceras HTTP y el navegador utilizando. Una vez que el browser tiene algún elemento de nuestra página en cache, realizara una de las siguientes acciones dependiendo de la cabecera utilizada:

304-not-modified

1. Comprobara en cada petición si el archivo ha sido modificado. Si la respuesta de estado es HTTP 304 (no modificado) cargara el fichero desde la cache.
2. No realizara ninguna comprobación y cargara el archivo desde la cache hasta que este caduque.

El segundo caso es más rápido ya que ahorra una gran cantidad de peticiones HTTP.

Establecer la cebecera Expires

Para forzar el segundo caso echaremos mano de el fichero .htaccess una vez más y aplicaremos la siguiente regla para decirle a el browser que los ficheros con las siguientes extensiones no caducan hasta el año 2012:

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)(\.gz)?$">
Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
Header unset ETag
FileETag None
</FilesMatch>

Para el que lo prefiera también podemos añadir reglas similares en el archivo de configuración de apache:

<Virtualhost>
......
ExpiresActive On
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/css A604800
ExpiresByType text/javascript A604800
ExpiresByType application/x-javascript A604800
ExpiresByType text/html A300
ExpiresByType text/xml A300
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
</Virtualhost>

En este caso le indicamos el número de segundos que tardan los ficheros en caducar (A300 = 300 segundos).

Plugins para Wordpress

Por último wordpress cuenta con algunos plugins como db cache o wp super cache que nos pueden ayudar a restarle más carga a nuestro servidor. En las pruebas que he realizado sobre este blog la mejora ha sido casi inapreciable, de todas formas, no descarto que esta pueda ser mucho mayor en blogs con bases de datos mayores o configuraciones distintas.

Los resultados

Wordpress

Concurrency Level:      20
Time taken for tests:   61.333 seconds
Complete requests:      141
Failed requests:        0
Write errors:           0
Total transferred:      6077689 bytes
HTML transferred:       6039609 bytes
Requests per second:    2.30 [#/sec] (mean)

WP + APC

Concurrency Level:      20
Time taken for tests:   60.946 seconds
Complete requests:      173
Failed requests:        0
Write errors:           0
Total transferred:      6919990 bytes
HTML transferred:       6877150 bytes
Requests per second:    2.84 [#/sec] (mean)

WP + APC + .HTACCESS

oncurrency Level:      20
Time taken for tests:   60.326 seconds
Complete requests:      255
Failed requests:        0
Write errors:           0
Total transferred:      10200281 bytes
HTML transferred:       10136973 bytes
Requests per second:    4.23 [#/sec] (mean)

WP + APC + .HTACCESS + DB CACHE

Concurrency Level:      20
Time taken for tests:   60.350 seconds
Complete requests:      262
Failed requests:        0
Write errors:           0
Total transferred:      10253142 bytes
HTML transferred:       10189596 bytes
Requests per second:    4.34 [#/sec] (mean)
Compartir:
  • Facebook
  • Twitter
  • Meneame
  • Google Bookmarks
  • del.icio.us
  • BarraPunto
  • Bitacoras.com
  • Netvibes
  • MySpace
  • Technorati
  • email
  • PDF

Ningun post realacionado

Deja un comentario

You must be logged in to post a comment.