Alto rendimiento en Drupal 6.X y optimización

Drupal permite añadir casi cualquier funcionalidad a tu web a base de ir añadiendo módulos. Cada módulo que se añade al sistema, añade complejidad, ejecución de código php (y por tanto, de CPU), y consultas SQL a base de datos. En la fase de desarrollo solamente un usuario o dos acceden concurrentemente a la web y no podemos apreciar si la web será rápida o no, o si requerirá mucho hardware. Cuando se lanza la página a producción si no se han implantado medidas de optimización de rendimiento el tiempo de respuesta de la página comenzará a incrementarse cuanto más visitas se reciban. En este post intentaremos dar un listado de acciones recomendables para preparar su sitio web desarrollado en Drupal para recibir un gran número de visitas.

Recomendaciones generales

  1. No sobrecargue cada una de sus páginas con bloques que suponen muchas visitas a base de datos y que aportan poca información. Si quiere mostrar información sobre páginas más visitadas, usuarios activos, comentarios recientes, etc, hágalo sólo en la portada, en el resto de páginas esto incrementa los requerimientos del servidor a la hora de servir cada página.
  2. Utilice Ajax cuando pueda, por ejemplo, cuando sus nodos admitan comentarios, instale el módulo Ajax Comments. Además de ser más cómodo para el usuario, elimina refrescos de pantalla, y por tanto menos consumo de CPU y menos consultas a base de datos.
  3. Activar la cache de Drupal. Toda web en producción tiene que tener activada esta funcionalidad. Para ello vamos a /admin/settings/performance que permite:
    a) Compresión de páginas (si el navegador cliente lo admite, que prácticamente todos los navegadores actuales lo soportan) utilizando menor ancho de banda en cada petición.
    b) Cache de bloques, para que no se regenere cada módulo en cada petición de página. Por ejemplo, los posts más leidos, en lugar de calcularse y generarse en cada visita, pueden generarse cada hora o cada día.
    c) Cache de ficheros css y js. Por tanto estos ficheros, como en principio no cambian, no se sirven en cada visita, sólo en la primera de cada cliente.

Recomendaciones para sitios con la mayoría de visitas anónimas

La mayoría de webs basan su tráfico en visitas anónimas, donde los usuarios sólo se identifican cuando realizan algún comentario o añaden contenido. Encontes, independientemente de quien visite la página, siempre se mostrará el mismo contenido. Para este tipo de webs, la mejor acción a tomar es la siguiente:

Módulo Boost.

La cache de drupal se almacena en base de datos, con lo cual, ante un número elevado de visitas, se puede producir un cuello de botella en la base de datos. Con el módulo Boost lo que se hace es crear un fichero .html con la página generada y se modifica el fichero .htaccess para que la consulta a una página muestre directamente el fichero .html sin hacer ninguna consulta a base de datos. Se puede configurar el tiempo que debe estar como mínimo cada página en cache antes de ser renovada, por tanto, para contenidos que no cambian frecuentemente, el servidor se ahorra multitud de accesos a base de datos y de consumo de CPU. Esta solución se ha implementado en sitios de alto rendimiento como www.nomaskeine.com, ya que cada página no es simple texto, sino que se compone de estadísticas basadas en múltiples consultas a base de datos, y con apenas 500 visitas diarias el servidor compartido tenía problemas para gestionar las visitas. En cambio, tras la implementación de la cache Boost, el sitio sirve sin problemas páginas a más de 5000 visitantes diarios, y sigue estando alojado en el mismo servidor de hosting compartido.

Sitios web con la mayoría de visitas autenticadas

Para este tipo de sitios, donde no se puede servir la misma página a un visitante que a otro, se utilizan otras técnicas de optimización.

  1. Block cache alter. Con este módulo, podemos configurar que bloques queremos que se muestren a todos los usuarios igual y cuales se deben regenerar para cada usuario. Con esto optimizamos las consultas a bases de datos de los bloques que son comunes a todos los usuarios.
  2. Authcache. Este sistema sirve tanto para páginas con visitas anónimas como para visitas autenticadas, pero la mayoría de usos del módulo se realizan por estas segundas, por las autenticadas, ya que este módulo realiza una cache en base de datos a nivel de usuario y/o rol, por tanto puede servir una página en apenas 1 o 2 milisegundos si determita que la página está siendo visitada por el mismo usuario o rol. Requiere opcode, con lo cual, no todos los servidores compartidos serán válidos para aplicar esta optimización. En servidores dedicados, es la mejor opción de incremento de rendimiento.

Conclusiones

Una web en Drupal sin optimizar utiliza muchos recursos en el servidor tanto de CPU como de accesos a bases de datos. Si no queremos aumentar el gasto en alojamiento web contratando potentísimos servidores, optimice su Drupal con estos consejos o déjese asesorar por expertos en la optimización de webs

 

Categoría