SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
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

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

                                                                                                      Nace RedDeAutores (BuddyPress)
                                                                                                      25/3/11

                                                                                                            Primera WordPress Meetup
                                                                                                            Córdoba
                                                                                                            1/10/11

                                                                                                             WordCamp Sevilla 2011
                                                                                                             8/10/11

                                                                                                               Descubro WPQuestions
                                                                                                               1/12/11
                                                        Nace el blog de juegos de Linux
                                                        Hispano
                                                                                                                          Segunda WordPress Meetup
                                                        7/2/08                                                            Córdoba
        Nace Linux Hispano                                                                                                6/10/12
        1/7/04                                                                  Linux Hispano se pasa a
                                                                                WordPress
                                                                                                                            Nace Geometrio (mis primeros
                    Conozco WordPress                                           15/10/09                                    CPT)
                    1/1/05                                                                                                  23/11/12
       2004              2005           2006     2007           2008            2009           2011            2012

' 04          jul            ago           sep      oct             nov              dic           ene             feb         ' 13
¿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
        – …
¿Cómo medir todo esto?



• En WordPress
  – P3 (Plugin Performance Profiler): grandes números
  – Debug Queries: lista detallada de peticiones a BBDD
  – Manualmente: get_num_queries() y timer_stop(1)
• En el cliente
  – Chrome/Chromium: herram. para desarrolladores
  – Firefox: Firebug + Yslow
• En la nube
  – Google PageSpeed Tools
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
Preguntas




             @fjcarazo
            jcarazo.com

Más contenido relacionado

Similar a Aligerando WordPress: optimizando el rendimiento

Taller de introducción a drupal 7 1ª parte
Taller de introducción a drupal 7 1ª parteTaller de introducción a drupal 7 1ª parte
Taller de introducción a drupal 7 1ª parteJavier Gomez
 
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Osvaldo Mercado Coss
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerceDavid Ramirez
 
Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4David Ramirez
 
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...barcampcr
 
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontableCursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontablealdoalar
 
Meetup training Taller RoR
Meetup training Taller RoR Meetup training Taller RoR
Meetup training Taller RoR cdechauri
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHPJomicast
 
Manual wordpress básico
Manual wordpress básicoManual wordpress básico
Manual wordpress básicoDolores Vela
 
Polybase
PolybasePolybase
PolybaseSolidQ
 
Comercio electronico
Comercio electronicoComercio electronico
Comercio electronicoyimloushiant
 

Similar a Aligerando WordPress: optimizando el rendimiento (20)

Taller de introducción a drupal 7 1ª parte
Taller de introducción a drupal 7 1ª parteTaller de introducción a drupal 7 1ª parte
Taller de introducción a drupal 7 1ª parte
 
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
 
Interchange CMS - e-commerce
Interchange CMS - e-commerceInterchange CMS - e-commerce
Interchange CMS - e-commerce
 
Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4Interchange How-To for Red Hat Linux ES4
Interchange How-To for Red Hat Linux ES4
 
Curso De Wordpress
Curso De WordpressCurso De Wordpress
Curso De Wordpress
 
El dominio
El dominioEl dominio
El dominio
 
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...
BarCamp CR 2013 - Desarrollo profesional y modelos de negocio con drupal - en...
 
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontableCursillose ghost2010.open er-pcomosoftwaredegestióncontable
Cursillose ghost2010.open er-pcomosoftwaredegestióncontable
 
Meetup training Taller RoR
Meetup training Taller RoR Meetup training Taller RoR
Meetup training Taller RoR
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHP
 
Performance en Drupal 7
Performance en Drupal 7Performance en Drupal 7
Performance en Drupal 7
 
Examen Profesional 1
Examen Profesional 1Examen Profesional 1
Examen Profesional 1
 
Manual wordpress básico
Manual wordpress básicoManual wordpress básico
Manual wordpress básico
 
Polybase
PolybasePolybase
Polybase
 
Flisol
FlisolFlisol
Flisol
 
Flisol
FlisolFlisol
Flisol
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Comercio electronico
Comercio electronicoComercio electronico
Comercio electronico
 
Paginas web
Paginas webPaginas web
Paginas web
 
Paginas web
Paginas webPaginas web
Paginas web
 

Aligerando WordPress: optimizando el rendimiento

  • 1. Aligerando WordPress: optimizando el rendimiento Córdoba Meetup 2012 @fjcarazo - Carazo Gil, Francisco Javier
  • 2. ¿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
  • 3. ¿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
  • 4. WordPress y yo Mi libro Domine WordPress: Manual Práctico 1/2/11 Nace RedDeAutores (BuddyPress) 25/3/11 Primera WordPress Meetup Córdoba 1/10/11 WordCamp Sevilla 2011 8/10/11 Descubro WPQuestions 1/12/11 Nace el blog de juegos de Linux Hispano Segunda WordPress Meetup 7/2/08 Córdoba Nace Linux Hispano 6/10/12 1/7/04 Linux Hispano se pasa a WordPress Nace Geometrio (mis primeros Conozco WordPress 15/10/09 CPT) 1/1/05 23/11/12 2004 2005 2006 2007 2008 2009 2011 2012 ' 04 jul ago sep oct nov dic ene feb ' 13
  • 5. ¿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
  • 6. ¿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
  • 7. ¿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
  • 8. 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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 – …
  • 14. ¿Cómo medir todo esto? • En WordPress – P3 (Plugin Performance Profiler): grandes números – Debug Queries: lista detallada de peticiones a BBDD – Manualmente: get_num_queries() y timer_stop(1) • En el cliente – Chrome/Chromium: herram. para desarrolladores – Firefox: Firebug + Yslow • En la nube – Google PageSpeed Tools
  • 15. 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
  • 16. Preguntas @fjcarazo jcarazo.com