BuddyPress, WordPress y bbPress

Blog

La Biblia para la Optimización de WordPress

wordpress_cronometro

ADVERTENCIA: Este tutorial, quizás, no es para todo el mundo. Muchos pasos los podrás realizar sin ningún problema, pero en otros, es necesario un conocimiento más avanzado.

La Biblia de la Optimización de WordPress

Este tutorial de WordPress es quizás  la guía más completa de optimización de WordPress creado hasta el momento, con una gran colección de consejos sobre cómo acelerar tu sitio.

Si alguna vez has experimentado un panel de administración de WordPress lento,mensajes que  “ha caído el servidor MySQL”,  las páginas tardan una eternidad en cargar o si deseas preparar tu sitio para un importante aumento en el tráfico (por ejemplo llegas a la primera página de Digg) esta es la guía que estabas buscando.

1. Comprueba las estadísticas de tu web

Lo que suele suceder, en sitios con problemas de carga lenta es, simplemente,  el tamaño de la página. Hoy día, mucha gente coloca en sus páginas imágenes, flash, videos y mucho javascripts que necesita de ancho de banda para cargarse.

Si desea empezar a abordar esta cuestión con seriedad, lo que necesitas en primer lugar el navegador Firefox, la extensión Firebug y el plugin YSlow.

El módulo YSlow te permitirá obtener una puntuación de rendimiento de 0-100. Tu sítio debería obtener 80 o más, ese será nuestro objetivo.

Trata de tener páginas de 100 kb como máximo. Lo ideal serían páginas por debajo de 50kb. Si tienes una gran cantidad de contenido multimedia, intenta por todos los medios aprender a usar YSlow.

Más información sobre las formas de mejorar la velocidad de carga de la página.

2. Revisa tu SO Windows Vista

En raras ocasiones en que estás cargando con lentitud tu sitio y otros sitios, puede ser por tu sistema de Windows Vista.

Si está ejecutando Vista comprobar este artículo para obtener un diagnóstico y posibles soluciones.

3. Comprobar los Plugins

Los plugins son generalmente el principal sospechoso de la baja velocidad de carga. Con tantos plugins de WordPress, podría ser que hubieramos instalado un plugin que no utilizara los recursos de manera óptima.

Por ejemplo plugins que causaban en el pasado problemas de carga eran Popularity contestaLinks@Feed.

Para comprobar los plugins, desactivar todos ellos y comprobar las áreas críticas de nuevo. Si todo va bien, volver a habilitar los plugins uno a uno hasta encontrar el plug-in problemático.

Después de encontrar el causante, puedes escribir un mensaje al autor del plugin y esperar a que lo arregle o buscar una alternativa.

4. Revisa tu Theme

Si los plugins no son los culpables de la lentitud de la página, debes comprobar el Theme que usas.

Los temas pueden incluir código con capacidads de plugin dentro de archivo function.php. De modo que, todo lo que se aplica a los plugins, se pueden aplicar al theme.

Además, los themes pueden utilizar JavaScript excesivo o archivos de imagen, lo que provoca una carga lenta de la página a causa de gran cantidad de datos a transferir y / o el número de peticiones HTTP utilizadas.

Con WordPress, viene un theme predeterminado. Utilízalo para comprobar si el culpable es el theme que usas.

Si descubres que el causante de la lentitud de carga es el theme que usas, puede utilizar la herramienta Firebug. Excelente herramienta para el navegador Firefox, te ayudará a depurar el problema.

También puedes utilizar este sitio para obtener información general sobre tu sitio de forma muy rápido.

5. Optimizar las Tablas de la base de datos

Debes optimizar las Tablas de base de datos  periódicamente (y reparar si es necesario) para un rendimiento óptimo.

Yo recomiendo usar el plugin WP-DBManager que proporciona esta funcionalidad, así como copia de seguridad de base de datos, que son clave para cualquier instalación de blog.

WP-DBManager te permite programarlo y olvidarte, y se encargará de todo el trabajo de forma automatizada. (si lo deseas, te enviará la base de datos cada día a tu email)

Otra alternativa,  es realizar el proceso de forma manual, optimizando y reparando las Tablas a través de una herramienta como phpMyAdmin.

6. Desactiva las revisiones de las Entradas (post)

Con WordPress 2.6 y posteriores, apareció lo que se denominó, “Revisiones de la Entrada”. Un seguimiento de la entrada de forma automatizada. Cada vez que “Guardamos” una modificación, la revisión se escribe en la base de datos. Si no necesita esta función, puedes desactivarla mediante la adición de una línea a tu archivo wp-config.php, que se encuentra en el directorio de instalación de tu sitio de WordPress:

[php]define(‘WP_POST_REVISIONS’, false);[/php]

Si has tenido esta opción activa en tu blog durante un tiempo, tendrás gran cantidad de puntos de restauración de las entradas. Si deseas eliminar las revisiones, simplemente ejecuta esta consulta (por ejemplo, utilizando el mencionado plugin WP-DBManager).

[php]DELETE FROM wp_posts WHERE post_type = "revision";[/php]

Esto eliminará todos los “revision” de las Tablas de la base de datos, por lo que reducirás su tamaño considerablemente.

ADVERTENCIA: Haz esto con cuidado. Si no estás seguro de lo que está haciendo, asegúrate de realizar una copia de seguridad de la base de datos o, mejor aún, pide ayuda profesional.

7. Implementar el almacenamiento en caché

El almacenamiento en caché es un método de recuperación de datos desde un subdirectorio preparado (cache) en lugar de utilizar los recursos para generar cada vez la misma información que se necesita. El uso de la caché, acelera considerablemente la carga de las páginas y por regla general se usa en todas las aplicaciones más modernas.

La forma más fácil de implementar el almacenamiento en caché (y por lo general la única forma si tu blog está en un alojamiento compartido) es utilizar un plugin caché.

El más utilizado es el WP Super Cache.

Un nuevo niño en la familia, W3 Total Cache, que es la alternativa más potente, y cada día madura.

8. Optimización de MySQL

MySQL puede guardar los resultados de una consulta en su caché propio. Debes editar el fichero de configuración de MySQL (normalmente /etc/my.cnf) y agregar estas líneas:

[php]query_cache_type = 1
query_cache_limit = 1M
query_cache_size = 16M[/php]

Esto creará un caché de 16 MB después de reiniciar el servidor MySQL (la cantidad depende de la cantidad de RAM disponible, yo uso alrededor de 250 MB de 4GB ).

Para comprobar si está funcionando correctamente, ejecuta esta consulta:

[php]SHOW STATUS LIKE ‘Qcache%’;[/php]

Ejemplo de resultado:

Qcache_free_blocks 718
Qcache_free_memory 13004008
Qcache_hits 780759
Qcache_inserts 56292
Qcache_lowmem_prunes 0
Qcache_not_cached 3711
Qcache_queries_in_cache 1715
Qcache_total_blocks 4344

MÁS OPTIMIZACIONES PARA MYSQL:

Hay un montón de opciones con las que puedes jugar, aquí está mi archivo de configuración MySQL, funcionando para 4GB, quad-core.

Esto no tiene porqué irte bien a ti, es solo una orientación general.

[php][mysqld]
bulk_insert_buffer_size = 8M
connect_timeout=10
interactive_timeout=50
join_buffer=1M
key_buffer=250M
max_allowed_packet=16M
max_connect_errors=10
max_connections=100
max_heap_table_size = 32M
myisam_sort_buffer_size=96M
query_cache_limit = 4M
query_cache_size = 250M
query_cache_type = 1
query_prealloc_size = 65K
query_alloc_block_size = 128K
read_buffer_size=1M
read_rnd_buffer_size=768K
record_buffer=1M
safe-show-database
skip-innodb
skip-locking
skip-networking
sort_buffer=1M
table_cache=4096
thread_cache_size=1024
thread_concurrency=8
tmp_table_size = 32M
wait_timeout=500

# for slow queries, comment when not used
#log-slow-queries=/var/log/mysql-slow.log
#long_query_time=1
#log-queries-not-using-indexes

[mysqld_safe]
nice = -5
open_files_limit = 8192

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer = 64M
sort_buffer = 64M
read_buffer = 16M
write_buffer = 16M[/php]

9. PHP Cache

PHP es un lenguaje interpretado, lo que significa que se inicia cada vez con el código PHP. Este proceso de compilación puede ser almacenado en caché con la instalación de un caché de código de operación, tales como eAccelerator. Hay otras soluciones de almacenamiento en caché.

Para instalar eAccelerator, descomprime el archivo y ves a la carpeta eAccelerator. A continuación, escribe:

[php]phpize
./configure
make
make install[/php]

Esto instalará eAccelerrator.

Después hay que crear la carpeta temporal para el almacenamiento:

[php]mkdir /var/cache/eaccelerator
chmod 0777 /var/cache/eaccelerator[/php]

Por último, hay que añadir estas líneas al final de tu archivo php.ini (generalmente /etc/php.ini o /usr/lib/php.ini):

[php]extension="eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/var/cache/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="0"
eaccelerator.shm_prune_period="0"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"[/php]

Los cambios se notarán de inmediato, ya que PHP no tiene por qué ser reiniciado.

Nota 1: WP Super Cache y eAccelerator trabajan juntos muy bien, consiguiendo un gran redimiento.
Nota 2: Si te gusta probar más potencia en la conjunción de WP Super Cache y eAccelerator mira esta página.
Nota 3: Lamentablemente eAccelerator no funcionará si PHP es ejecutado como CGI. Puedes usar FastCGI que trabajará con suexec y eAccelerator.

10. Optimización del servidor Web

Sobre la optimización de Apache se ha escrito mucho en los libro, pero os voy a recomendar unas páginas, en primer lugar esta página. Para consejos de compilación esta otra, para consejos sobre rendimiento esta, consejos VPS aquí y para consejos de keep alive aquí.

Puede probar fácilmente los cambios en la configuración mediante la ejecución de una prueba en tu línea de comandos

[php]ab -t30 -c5 http://www.tusitio.com/[/php]

y comparar los resultados. Tengo alrededor de 200 req/s en un VPS.

Para pruebas más flexible puedes utilizar herramientas como Autobench que trabaja en conjunto con httperf, otra herramienta de evaluación comparativa.

Utiliza un servidor web rápido como nginx para servir contenido estático (es decir, imágenes), mientras que utilizas otro servidor para el contenido dinámico, que es otro truco que se suele usar.

Nota 1: Más recursos interesantes. Optimización del tiempo de carga de página y una serie de tutoriales sobre la mejora del rendimiento web.
Nota 2: Puede encontrar más consejos y trucos en el sitio de Elliot’s Back

11. “El servidor MySQL ha caido” solución

Este error de base de datos de WordPress aparece en algunas configuraciones y se manifiesta en yendo lento o no hay respuesta, por lo general en su página de administración.

La Solución para este problema de MySQL se intenta abordar muy bien en este artículo.

Este problema, evidentemente existe, pero la solución propuesta es válida sólo hasta que actualices WordPress. Es de esperar que se seguirá investigando y se añadira una solución en el núcleo de WordPress en un futuro.

Nota: Hay veces que dando a wait_timeout un valor de 1000 es suficiente.

12. Problema de imposibilidad de envío de Entradas

Si estás experimenta problemas en el panel de administración de WordPress, con la imposibilidad de publicar o actualizar algunas entradas, es probable que te estés dando de lleno contra mod_security.

ModSecurity es el módulo de Apache para aumentar la seguridad del sitio web mediante la prevención de intrusiones en el sistema. Sin embargo, a veces, puede decidir que WordPress está realizando consultas de MySQL sospechosas y las introduce en la lista de negra, lo cual se manifiesta con lentitud o falta de respuesta del sitio.

Para probar si este es el caso, revisa tu registro de errores de Apache, por ejemplo:

[php]tail -f /usr/local/apache/logs/error_log[/php]

y buscar algo como esto:

[php]ModSecurity: Access denied with code 500 (phase 2) … [id "300013"] [rev "1"] [msg "Generic SQL injection protection"] [severity "CRITICAL"] [hostname www.prelovac.com"] [uri "/vladimir/wp-admin/page.php"[/php]

Nos dice que el acceso a esta página fue negado a causa de una regla de seguridad con ID 300013. Para arreglarlo, debemos introducirlo en la lista blanca.

Para ello, edita el archivo de configuración de Apache (por ejemplo /usr/local/apache/conf/modsec2/exclude.conf) y agrega estas líneas:

[php]SecRuleRemoveById 300013[/php]

Esto añadirá la página a la lista blanca de seguridad y tu sitio seguirá trabajando con normalidad.

13. Pings RSS y Pingbacks

Otra razón para la lentitud de WordPress puede ser el ping RSS y tiempo de espera para pingback.

WordPress, por defecto, intente hacer ping a los servidores que aparecen en tu lista de ping (que se encuentra en Opciones-> Escritura) y uno de ellos puede retrasar el proceso.

La segunda razón son pingbacks, mecanismo en el que notifica a los sitios que has enlazado en tu entrada. Puedes desactivarlo en Preferencias-> Discusión “Tratar de notificar a todos los blogs enlazados en la entrada (hace más lenta la publicación)”.

Prueba la lista de pings  y ha desactivar el pingbacks para ver si ayuda a acelerar sel tiempo de espera.

Lo siguiente, son las reglas generales para optimizar el tiempo de carga de las páginas

14. Subdominios, pueden ser utilizados para compartir la carga

La mayoría de los navegadores están configurados para cargar 2-4 archivos de un dominio en paralelo. Si mueves algunos archivos a un dominio diferente (subdominio) el navegador comenzará a descargarse en paralelo varios archivos (de 2 a 4).

Es buena idea mover los archivos de imagenes a un subdominio que crees. Por ejemplo, puedes colocar todas tu imagenes de diseño en un subdominio y mediante la hoja css realizar las peticiones para que las descargue del subdominio.

15. Minimizar el número de peticiones HTTP

Puedes disminuir el número de peticiones HTTP utilizando menos imágenes (o colocando todas las imágenes en una imagen de gran tamaño e ir posicionandola mediante CSS), utilizando menos  javascript, menos archivos css (por lo general, esto significa menos plugins).

Se ha realizado un gran esfuerzo con el plugin PHP speedy. Este Plugin fusiona todos los todos los archivos JavaScript y CSS en un gran archivo que ayuda ayuda a reducción drásticamente el números de solicitudes HTTP. El mayor inconveniente de PHP Speedy es que no es 100% compatible con todos los plugins.

También podría ser interesante utilizar CSS Sprite generator para mover todas tus imágenes en una sola imagen y luego usar la posición de fondo en CSS para mostrarlas. Esto reducirá el número de peticiones HTTP de forma significativa.

16. Comprimir el contenido usando Apache. Htaccess

Si tienes tu propio servidor, podrá seleccionar la utilización de gzip para enviar el contenido a los navegadores. Esto reducirá significativamente el tiempo de carga, la mayoría de páginas HTML se comprimen bien.

Si quieres probarlo, añade este código a tu htaccess.

[php]AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/x-javascript application/x-httpd-php application/rss+xml application/atom_xml text/javascript[/php]

17. Crear cabeceras de expiración

Los encabezados de expiración, son muy interesantes para decirle a los navegadores si deben utilizar la cache o no, y durante cuanto tiempo. La mayoría de las imágenes de un sitio nunca cambian y es una buena idea que se mantengan en la cache local de los usuarios.

Una posible configuración recomendada sería esta.

[php]Header unset Pragma
FileETag None
Header unset ETag

# 1 year

Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified

# 2 HOURS

Header set Cache-Control "max-age=7200, must-revalidate"

# CACHED FOREVER
# MOD_REWRITE TO RENAME EVERY CHANGE

Header set Cache-Control "public"
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
Header unset Last-Modified[/php]

Puedes comprobar la configuración de tu cache aquí.

18. Cache para Gravatar

Muchos blogs usan Gravatar, las pequeñas imágenes al lado de los comentarios. Sin embargo Gravatars tiene dos grandes defectos en cuanto a la optimización de su sitio:

Cada imagen Gravatar, ejecuta una nueva petición  HTTP, incluso si ya ha sido descargada la imagen en algún comentario anterior en la misma entrada (entradas que contengan 100 comentarios se producen 100 solicitudes HTTP)

Las Imágenes Gravatar no caducan.

Lo que podemos hacer es crear una caché para Gravatar de forma local, donde las imágenes se almacenan en caché y sirve para nuestro sitio. Lo ideal sería colocar la caché para Gravatar en un subdominio separado (véase el primer apartado).

Puedes usar un plugin como Zenpax.com que permite almacenar todas las imágenes Gravatars en una caché local.

19. Optimizar las imágenes con smush.it

A menudo, se pasa por alto que las imágenes pueden ser optimizadas (que tengan menos peso). Esto reduce significativamente los tiempos de carga.

¿No sería perfecto si pudieras abrir un sitio, pulsar un botón en su navegador y recibir todas las imágenes de tu sitio optimizadas y listas en un único archivo zip?. Pues es posible gracias a smush.it y su plugin para Firefox. Es increíble lo fácil y potente que es.

20. CSS en la parte superior, JavaScript en la parte inferior

Esta es  la práctica de oro. Debes colocar tus archivos CSS en la parte superior de la página para que se cargan en primer lugar. Los Archivos JavaScript debe ser colocado en la parte inferior de la página (cuando sea posible). Para ello, tenemos un plugin que realiza exactamente esto, siempre que sea posible, el plugin se llama Footer JavaScript.

Conclusión

Los Servidores web y los sitios web modernos dependen de muchos factores diferentes.

En este tutorial se han reflejado los diferentes enfoques de optimización a nivel de sistema , Apache, PHP y MySQL y cambios en configuración de su WordPress.

fuente prelovac

33 Comentarios

Comentarios

01

[…] BuddyPress-es, he creado una extensa entrada para optimizar nuestra instalación de […]

 
02
Bitacoras.com
19 octubre, 2009

Información Bitacoras.com…

Valora en Bitacoras.com: No hay resumen disponible para esta anotación…

 
03
Bitacoras.com
19 octubre, 2009

Información Bitacoras.com…

Valora en Bitacoras.com: José Conti publica hoy en BuddyPress-es.com un excelente tutorial con tips para la correcta configuración y solución de problemas en WordPress. Está orientado principalmente a quienes tienen un servidor dedicado, pero tambi…

This comment was originally posted on La Brujula Verde

 
04
Bitacoras.com
19 octubre, 2009

Información Bitacoras.com…

Valora en Bitacoras.com: Estupenda la guía que ha creado José Conti en BuddyPress-es con la que optimizar al máximo WordPress. Personalmente le habría añadido/cambiado algún punto pero está genial, de lectura imprescindible y para añadir a favoritos……

This comment was originally posted on Ayuda WordPress

 
05

[…] la guía que ha creado José Conti en BuddyPress-es con la que optimizar al máximo WordPress. Personalmente le habría añadido/cambiado algún punto […]

 
07
DoctorPc
19 octubre, 2009

hummm veré que tal funciona el plugin para las img de gravatar, Gracias!

 
08

[…] Para ver los consejos de forma más amplia colsulta la Biblia para la Optimización de WordPress […]

 
09
Recuperación de datos
19 octubre, 2009

Muy buena guía. Gracias

 
10
meneame.net
19 octubre, 2009

La Biblia para la Optimización de WordPress…

Este tutorial de WordPress es quizás la guía más completa de optimización de WordPress creado hasta el momento, con una gran colección de consejos sobre cómo acelerar tu sitio. Si alguna vez has experimentado un panel de administración de WordPress le…

 
11

[…] es lo José nos dice al empezar su presentación. Si alguna vez has experimentado un panel de administración de WordPress lento, mensajes que”ha […]

 
12
Delighted
20 octubre, 2009

Mucho Gracies!

 
13
DGLibre
20 octubre, 2009

Impresionante, has hecho una guía muy completa y bien explicada. Muchas gracias.

 
14

[…] de: Biblia de Optimizacion para WordPress Biblia de Optimización para WordPress Como mejorar el rendimiento de WordPress con caché […]

 
15
bloogeame.com
20 octubre, 2009

La Biblia para la Optimización de WordPress…

ADVERTENCIA: Este tutorial, quizás, no es para todo el mundo. Muchos pasos los podrás realizar sin ningún problema, pero en otros, es necesario un conocimiento más avanzado….

 
16
Nicolas Viroga
20 octubre, 2009

Muy buen post, gracias por compartir.Un saludo

 
17
Gabriel
21 octubre, 2009

Extraordinaria guia, una recopilacion de medios imprescindible, aunque no me animo a utilizar algunos de los recursos y otros, como no uso mi propio server, no son aplicables. ¿Cómo se usa, en el contexto de WordPress, el CSS Sprites generator? Gracias,
G

 
18
José Conti
21 octubre, 2009

En lo que consiste es, mediante el cuestionario subir todas las imágenes de tu theme.

La página te creará una gran imagen optimizada que englobará todas las imágenes que hayas subido.

Después, mediante CSS, vas colocando esa gran imagen por todo el theme, seleccionando el tamaño y la porción que deseas mostrar en cada parte del theme.

Un saludo

 
19
GhOsTi
22 octubre, 2009

si posteas la configuracion que usas para apache, bordas el articulo¡¡¡¡¡

 
20
José Conti
22 octubre, 2009

El artículo es general, me explico. Puede aplicarse todos los servidores, inclusoi los que utilizan algún tipo de panel de gestión, llamese cPanel o Plex.

El problema de Apache, es que cada servidor y más concretamente, cada tipo de Administrador, puede tener unas variantes muy concretas, en resumen, que podría traer muchos problemas en unos y en otros no.

Un saludo

 
21

[…] ? La Biblia de la Optimización de WordPress. Via: buddypress-es […]

 
22

[…] Enlace a la: Biblia para la optimización de wordpress […]

 
23
zEb
21 noviembre, 2009

Excelente guía
Gracias por el post.

 
24

[…] Ver guía de optimización de WordPress ju4ns3Ingeniero de Sistemas y Telecomunicaciones, aficionado a la tecnología y el mundo informático. Creador y administrador de ComuSOFT y entusiasta de las redes de comunicaciones y la seguridad de la información.Website – Facebook – More Posts Esto puede interesarte!Crear un Footer con Widgets y columnas en WordPress fácil y rápidoCómo crear Contraseñas seguras en InternetHerramienta libre para Análisis de tráfico en una RedMostrar artículos de una sola Categoría en WordPressCómo proteger la Información que tengo en mi PCAprender a manejar Microsoft Access 2010 GratisAnálisis Gratis de páginas Web o blogs – OnlineHerramienta gratis de Gestión Documental e InstalaciónCómo hacer asistencia Remota desde WindowsConsejos básicos para crear una Página web […]

 
25
raul
14 julio, 2011

bueno, buenoooo

 
27

[…] fuente en ingles prelovac traducido por: bp-es.com […]

 
28

[…] en ingles prelovac traducido por: bp-es.com       355 Visitas Etiquetas: biblia , codigos , optimizacion , […]

 
29
Sandux
18 abril, 2014

Gracias por la información, ha servido de mucho realmente

 
30
clay peck claypeck
9 enero, 2016

Ⲏi to all, thee contents ρresent at tһis
web sitge аrе really remarkable fⲟr people knowledge, ᴡell, кeep uup tɦᥱ ɡood ᴡork fellows.

Ηere iss mү һomepage: clay peck claypeck

 
31

Hi there Dear, are you actually visiting this website regularly, if
so afterward you will without doubt obtain nice experience.

 
32

Excellent post. I used to be checking continuously this weblog and
I am inspired! Extremely helpful info specifically the final section :
) I take care of such info a lot. I was looking for
this particular info for a very lengthy time. Thanks and best of luck.

 
33
website
6 marzo, 2016

Estos últimos, desprenden una luz de mejor calidad que las lámparas compactas y son de mayor potencia.

 

Dejar un comentario