Revista Ebusiness

Como optimizar el rendimiento de Drupal 7

Por Desamark
Como optimizar rendimiento DrupalComo optimizar el rendimiento de Drupal 7

Vamos a ver como optimizar el rendimiento de Drupal 7. Personalmente creo que Drupal es más flexible y configurable que otros CMSs como Wordpess, pero el rendimiento de Drupal deja bastante que desear comparado con otros CMS. Así que vamos a ver como optimizar el rendimiento de Drupal modificaciones:

Opciones del propio core de Drupal

- Imágenes

Configuración - multimedia - juego de herramientas de imágenes

Por defecto Drupal viene con un 75% de calidad en fotos JPG, se podría reducir a 60% o sustituir por algún otro módulo.

- Activar las caches y las compresiones de Drupal

Suena un poco evidente, pero debemos empezar por aquí. En vuestro panel de administrador de Drupal, acceder a la sección Configuración->rendimiento. En esta sección veréis que aparecen opciones cachear páginas y bloques. Debeis marcar las opciones "Caché de páginas para usuarios anónimos" y "Caché de bloques".

Con esto evitareis que Drupal tenga que reconstruir el HTML que sirve a vuestros usuarios cada vez que visitan la página. Tambien deberéis activar la compresión de CSS y Javascript en la sección "Optimización de ancho de banda". Haciéndolo, comprimiréis todos los recursos no PHP de la página en un solo archivo comprimido con gzip en vez de en varios archivos dispersos. Si no lo teníais activado, notaréis una mejora en el rendimiento de drupal tras activarlas.

Si no tenéis mucha experiencia debéis tener en cuenta que una vez activéis estas opciones, deberéis limpiar las caches después de hacer algún cambio de CSS o Javascript para que sean apreciables en la página o se servirá al usuario una versión cacheada anterior a los cambios.


- Activar la caché de Views

Cada vez que creéis una vista nueva en el módulo Views, si no son vistas que se vayan a refrescar con mucha frecuencia (varias veces a la hora) o necesiten un refresco inmediato, es conveniente activar las caches. Para ello, dentro del modo de edición de la propia vista, desplegad las opciones avanzadas y seleccionar la opción Caché.

Os pedirá un periodo de vigencia de esta versión cacheada, que no es más que el periodo que tardará Drupal en refrescar y reconstruir la vista. Evidentemente, cuanto más tiempo podáis mantener la caché mejor porque así más usuarios se verán beneficiados de una sola iteración de vuestra vista cacheada.

- Desactivar el módulo RDF

El módulo RDF es un módulo que dota al contenido de Drupal el formato de datos estructurados de Google principalmente. La realidad es que el procesamiento de la información que debe salir en pantalla no es del todo eficiente y, lo más importante, choca frecuentemente con los estándares W3 tan importantes para lograr un buen SEO. Mi consejo es desactivar este módulo.

Estos son algunos módulos que podemos instalar para mejorar la velocidad de carga y optimización en Drupal:

Un módulo muy util si la mayoría de las visitas a tu página de Drupal son usuarios anónimos. Boost almacena una caché de las páginas para servirlas como HTML estático, mejorando muchísimo el rendimiento del servidor. Si hay páginas que varías dependiendo del usuario que las vea, podemos especificar en la propia interfaz del módulo qué paginas no queremos que sirva como HTML.

- Views Litepager

Los paginadores de Drupal tienen un pequeño problema: para construir el índice del paginador tiene que hacer varias consultas bastante lentas a la base de datos, lo que reduce significativamente el tiempo de respuesta de MySQL, que es el auténtico talón de Aquiles por el que Drupal sirve las páginas tan despacio.

Utilizando este módulo, habilitaremos un pequeño paginador anterior-siguiente. Yo he notado una reducción del tiempo de respuesta espectacular después de configurar el módulo.

- Image API optimize

El motor que utiliza Drupal para reducir el tamaño de los formatos de imagen tampoco es el mejor que exite. Habilitando este módulo podremos valernos de otros servicios de reducción de tamaño de imágenes como el archiconocido Smush.it

- CSS Embed Images

Para mí este módulo ha sido una de las mayores sorpresas que me he llevado desde que trabajo con Drupal. Normalmente, todas las imágenes que están en los CSS como fondos son cargadas como cualquier otra imagen, haciendo que el Waterfall de carga de archivos sea más largo de lo deseable y, sobre todo si nuestro servidor es tan malo como el mío, eso lastra muchísimo la velocidad de carga.

Este módulo convierte las imágenes de fondo en cadenas hexadecimales y las embebe en el propio archivo CSS. El CSS crece mucho de tamaño claro, pero a cambio estamos cargando un solo archivo grande en vez de decenas de archivos pequeños. Es un módulo muy original y sus resultados para mí son impresionantes.

- Aggregator Cache

Drupal 7 incorpora una opción de configuración para reducir y comprimir los archivos CSS y Javascript. Con este módulo, podreis servir estos archivos comprimidos desde la cache del servidor.

Un módulo para habilitar de forma muy sencilla un Conten Delivery Network. Normalmente los servidores web disponen de un número limitado de descargas de archivos simultaneas para un mismo cliente, habilualmente cuatro. Si los cuatro huecos están ocupados, el resto de archivos deben esperar. Con un DCN podemos configurar varios subdominios para que, cuando uno este dobrecargado, nuestra página en Drupal busque el el siguiente dominio y sirva los archivos desde ahí.

Aqui teneis más información de como implementarlo.

Este módulo es realente simple de utilizar y ofrece unos resultados muy buenos. Solo necesitais un par de subdominios apuntando a la carpeta raíz de vuestra página web y vereis como mejora el rendimiento de Drupal. El CloudFlare podeis conseguir un CDN básico gratuito.

- Core_library

Core Library es un módulo que nos ayuda mejorar el rendimiento de la caché de drupal, además de minificar los archivos .JS y .CSS generador por el agregador incluido en el core de Drupal. Es un módulo muy recomendable en entornos Drupal de alto rendimiento.

- DB Optimizer

Uno de los mayores problemas de las caches es que si realizan muchos inserts y deletes en la base de datos, esta deja de ser óptima y muchas veces se corrompe. Para evitarlo, esta bien utilizar este módulo que realiza labores de limpieza y optimización de las tablas de Drupal que nosotros seleccionemos en la ejecución del cron, mejorando notablemente el rendimiento de nuestra página.

Estos son algunos cambios que podemos realizar a nivel del tema, plantilla o template para ganar velocidad:

Retrasar lo más posible la ejecución de Javascript

La ejecución por parte del navegador del javascript contenido en la página puede entorpecer el proceso de carga de la misma, por lo que es recomendable postponerla lo más posible. Un truco muy sencillo es localizar en el archivo html.tpl.php la línea de código donde imprime la variable $scripts y moverla hacia justo antes del cierre del body.

Minificar HTML

Es un proceso de optimización extrema como el que estamos planteando todo cuenta. Es importante eliminar los espacios y saltos de línea del código html. Existen muchas maneras de hacerlo, pero para los que tenemos páginas en servidores compartidos existe un truco muy fácil que es preprocesar el código que se va a imprimir desde la própia plantilla del tema. En el archivo template.php incluye la siguiente función:

function themename_process_html(&$vars) {// Minify HTML output. $before = array( "/>ss+/", "/ss+t+ ', ' <', '> <', ' ', ' ')// Page top. $page_top = $vars['page_top']; $page_top = preg_replace($before, $after, $page_top); $vars['page_top'] = $page_top; // Page content. if (!preg_match('/<pre|<textarea/', $vars['page'])) { $page = $vars['page']; $page = preg_replace($before, $after, $page); $vars['page'] = $page; } // Page bottom. $page_bottom = $vars['page_bottom']; $page_bottom = preg_replace($before, $after, $page_bottom); $vars['page_bottom'] = $page_bottom . drupal_get_js('footer'); }

Y tu, ¿conoces más formas de optimizar Drupal? !Comentanos e iremos apliandola la lista entre todos!!!


Volver a la Portada de Logo Paperblog