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:

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
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)
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)
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)
Ningun post realacionado
