Aligerando WordPress: optimizando el rendimiento

Preview:

DESCRIPTION

Cómo aligerar el rendimiento de un portal realizado con WordPress de forma muy simple. Especialmente enfocado a instalaciones WordPress que ejecutan en servidores con alojamientos compartido.

Citation preview

Aligerando WordPress: optimizando

el rendimiento

Córdoba Meetup 2012

@fjcarazo - Carazo Gil, Francisco Javier

¿Quién soy?

• Administrador de sistemas y desarrollador de

software en IAS-CSIC

• Cofundador y administrador de Linux Hispano,

Red De Autores y Geometrio

• Consultor WordPress en WPQuestions

• Emprendedor junto con @ahornero

¿Qué os voy a contar?

• Cómo conseguir el mejor rendimiento posible

con unos recursos determinados: alojamiento

web en servidor compartido

• No trataré:

– Mejoras a nivel de servidor

– Cambios de servidor web

– Inclusión de software como Varnish

– Modificaciones de la arquitectura de los servidores

• ¿Por qué? Experiencia y popularidad

WordPress y yo

' 04 2004

jul

2005

ago

2006

sep

2007

oct

2008

nov

2009

dic

2011

ene

2012

feb ' 13

Nace Geometrio (mis primeros CPT) 23/11/12

Segunda WordPress Meetup Córdoba 6/10/12

Descubro WPQuestions 1/12/11

WordCamp Sevilla 2011 8/10/11

Primera WordPress Meetup Córdoba 1/10/11

Nace RedDeAutores (BuddyPress) 25/3/11

Mi libro Domine WordPress: Manual Práctico 1/2/11

Linux Hispano se pasa a WordPress 15/10/09

Nace el blog de juegos de Linux Hispano 7/2/08

Conozco WordPress 1/1/05

Nace Linux Hispano 1/7/04

¿Por qué importa el rendimiento?

• SEO: +500ms 20% pérdida tráfico Google

• Económico: ampliar infraestructura

• Impresión del usuario

• Ventas: menor grado de conversión

• Rápido es mejor

• Ecológico: menos cómputo, menos energía

• Pérdida del servicio

¿Cómo funciona WordPress?

1. Usuario: introduce URL

2. Servidor web ejecuta WordPress

3. WordPress recopila datos de MySQL

4. Compone resultado

5. Lo envía

6. El usuario lo recibe

7. Navegador lo visualiza

¿Dónde puedo mejorar?

• Comunicaciones usuario-servidor

– Tamaño de los ficheros a transmitir

– Cantidad de ficheros transmitidos

• Tiempo de ejecución

– Cantidad y calidad de los plugins

– Llamadas PHP innecesarias

• Base de datos

– Cantidad y complejidad de las consultas

• Visualización en el cliente

– Complejidad interpretación CSS y JavaScript

Comunicaciones usuario-servidor

• Peso de los ficheros

– Activar compresión de Apache: Mod_Deflate

– WP Smush.it: reduce tamaño de las imágenes

– favicon pequeño y cacheable

– Compresión JPG y PNG

– Escalar imágenes con WordPress

Comunicaciones usuario-servidor

• Cantidad de peticiones:

– Un fichero una petición HTTP

– WP Minify: unifica ficheros JS y CSS

– Una sola imagen para todo el tema (sprites)

• CSS qué parte mostrar con background-position

– Integrar contenido multimedia dentro del texto en

Base64 cuando sea posible

Tiempo de ejecución

• Cantidad y calidad de los plugins

– P3 (Plugin Performance Profiler): datos sobre carga

– Actualización

– Sustituye su funcionalidad por algo más simple

Tiempo de ejecución

• Llamadas PHP innecesarias

– Sustituye funciones PHP por código estático

• get_bloginfo('name') ¿el nombre va a cambiar?

• get_bloginfo(charset') ¿y el juego de caracteres?

• … especialmente en el header.php y el footer.php

– En el escritorio, ¿por qué cargar todo?

• Quitar los widgets inútiles dentro del functions.php

Base de datos

• Cantidad y complejidad de las consultas

– ¿Nº de consultas para rellenar N entradas?

• 51 consultas para 8 entradas en Linux Hispano

• Usando CPT con muchos metadatos crece la complejidad

• ¡Evitar plugins mal diseñados!

• Necesidad de cachear

– WP Super Cache

• Facilidad

• Estabilidad

• Compatibilidad con vista móvil de WPtouch

– Mejor aún Varnish: otro concepto

Visualización en el cliente

• Navegador: intérprete de HTML, CSS y JS

– Facilitar interpretación

– Reglas CSS sin usar

– Optimizar JavaScript

• jQuery: acceder directamente por identificador

• Árbol DOM bien estructurado y lo más reducido posible

• Mejor cambiar clases a elementos que cambiar N

propiedades de estilo

• Minimizar número de líneas

– Usar encadenamiento

– Aprovechar partes incrementales bucle

– …

Para terminar

• Conclusiones

– WordPress poco optimizado por defecto…

– … pero fácil de optimizar

– Atención al alojamiento

– Factor diferenciador

– Escalabilidad

– No olvidar otros factores

• Situación geográfica

• Estado de la red

• Efecto Menéame/Barrapunto/Digg

Recommended