¿Cómo mejoro el rendimiento de mi sitio Drupal7? [cerrado]

10

Para alguien que es nuevo en Drupal, veo que hay muchos recursos disponibles en Drupal Caching, pero no estoy seguro de cuál usar.

Gokul NK
fuente
1
Podemos discutir si queremos una pregunta canónica para esto en meta, pero todavía creo que es demasiado amplia. Y las mejoras de rendimiento pueden ser muy sensibles al contexto y no hacerse en el vacío.
mpdonadio

Respuestas:

26

Estas son notas de mis experiencias y pueden variar de lo que otros experimentan. Principalmente uso la pila LAMP y he considerado lo mismo en mis sugerencias.

Reglas del pulgar para el almacenamiento en caché que generalmente sigo.

  1. Procesar una vez Usar varias veces.
  2. Vive con datos obsoletos cuando sea posible
  3. Limpie los cachés con poca frecuencia y manténgalos muy específicos.
  4. Cuando sea posible, realice los cambios en el nivel más bajo de la pila. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib y módulo personalizado.

Mejorar el rendimiento de un sitio de Drupal (en el orden creciente de complejidad)

  1. Mantenga el núcleo actualizado, el módulo contrib y los temas actualizados. Si importa.

  2. Instale APC en su servidor. (Movido al principio basado en la sugerencia de Letharion)

  3. Caché de página: admin / config / development / performance Diferencia entre la vida útil mínima de la caché y la caducidad de las páginas en caché

  4. Almacenamiento en caché de bloques https://drupal.org/project/blockcache_alter Opciones de almacenamiento en caché para todos los bloques.
  5. Agregue archivos javascript y css - Mejoras de front-end https://www.drupal.org/project/advagg
  6. Deshabilitar módulos innecesarios. Cada módulo se suma a la cantidad de código que debe estar disponible para una carga de página. Y también aumenta el número de búsquedas. Donde sea posible, utilice un módulo genérico en lugar de un módulo múltiple que realice funcionalidades específicas.
  7. Contenido de vistas en caché: almacenamiento en caché con reconocimiento de vistas https://www.drupal.org/project/views_content_cache
  8. Deshabilitar el registro de la base de datos: use https://drupal.org/project/syslog_ng
  9. Reduzca los errores 404 - http://www.brokenlinkcheck.com/
  10. Respuestas rápidas 404 - https://drupal.org/project/fast_404 - Intente el manejo a nivel de servidor.
  11. Validaciones del lado del cliente: https://www.drupal.org/project/clientside_validation
  12. Comprimir imagen: https://www.drupal.org/project/imageapi_optimize
  13. Carga diferida de imágenes: no cargue imágenes innecesarias: https://www.drupal.org/project/lazyloader
  14. Use hojas de Sprite: https://www.drupal.org/project/spritesheets

  15. Establezca el valor de tiempo mínimo de vida útil de la memoria caché en un número mayor y use módulos de limpieza de memoria caché para borrar las memorias caché de páginas específicas: cada vez que edito / actualizo un nodo, todas las memorias caché de página para usuarios anónimos se pierden

  16. Utilice el módulo de desarrollo para ver consultas.
  17. Reescriba las consultas de vistas / evite las vistas si es una exageración.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Perfiles y ajustes de bases de datos: https://www.drupal.org/project/dbtuner
  21. Use Boost , no Bootstrap DB si no es necesario. https://drupal.org/project/boost Para la mayoría de los sitios pequeños a medianos, Boost es lo suficientemente bueno y es posible que no necesite Proxies inversos más o menos.
  22. Utilice CDN: https://www.drupal.org/project/cdn Es fácil de configurar.
  23. Si sus tablas de caché son enormes, use Memcached: si puede instalar memcached y configurar la RAM, no es tan complejo como parece.
  24. Etags: configure Etags correctamente. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Utilice el servidor proxy inverso - Barniz (al menos para los activos). Ayuda mucho si la mayoría de sus usuarios son anónimos.
  26. Transferencia comprimida: habilite la compresión gzip
  27. Mantenerse vivo: use conexiones persistentes siempre que sea posible.
  28. JPEG progresivo -
  29. CACHING IN CODE: el blog de Eaton es increíble. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implementar el calentamiento de la caché: https://www.drupal.org/project/cache_warmer : caché Calentar las páginas antes de que el usuario final las golpee.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave facilita la configuración de uno.
  32. Clústeres de bases de datos: /programming/1163216/database-cluster-and-load-balancing
  33. Balanceadores de carga - http://en.wikipedia.org/wiki/Load_balancing_(computing)
  34. Utilice el calentamiento heurístico de caché: https://www.drupal.org/project/cache_graceful
  35. Caché de usuario autenticado: https://www.drupal.org/project/authcache
Gokul NK
fuente
2
Excelente respuesta, pero una cosa que me llama la atención es que no tienes APC en la parte superior. APC es trivialmente fácil de colocar, no hay inconvenientes y las ganancias pueden ser realmente grandes. Creo que debería ir a la cima. (Tal vez con un comentario de que no es necesario después de PHP 5.5 ya que la optimización finalmente se integró)
Letharion
1
¿Quizás también mencionar algo sobre las ganancias más fáciles para el almacenamiento en caché? Si su sitio requiere contenido estático en su mayoría (las páginas son las mismas para todos los usuarios, por lo que no hay inicios de sesión), Varnish o Boost proporciona las mayores ganancias.
Dominic Woodman
5

La capa de la base de datos es importante. Cubro algunas partes y lo básico en esta presentación http://goo.gl/30yi39

mikeytown2
fuente
Impresionante presentación MikeyTown. Eres el profesional de rendimiento :)
Gokul NK
3

Como compañero de la respuesta de Gokul, esta es la forma en que pensaría sobre lo que desea almacenar en caché en Drupal (no ordenado por complejidad):

El almacenamiento en caché significa acelerar las actividades repetidas.

Las grandes acciones repetidas involucradas en un sitio web de Drupal son:

  • Llamar a una página web
  • Ejecutar código PHP para construir una página web
  • PHP llamando a elementos de la base de datos

Almacenamiento en caché de una página web completa

Las mayores ganancias de almacenamiento en caché se obtienen al encontrar una manera de almacenar en caché una página web completa sin ejecutar el código PHP o llamar a la base de datos.

Puedes hacer esto con Varnish o Boost . Cuando un usuario llama a una página, devuelve una copia de la página sin hacer un cálculo.

Sin embargo, esto no funcionará si partes de la página tienen que ser diferentes (es decir, los usuarios inician sesión y su nombre aparece en la parte superior).

Para que eso funcione, debes buscar en Authcache.

Caché de PHP

Puede almacenar en caché PHP con APC , o si tiene la versión 5.5 o superior, entonces se integra una memoria caché diferente.

Esto se hace del lado del servidor y significa que se recordarán fragmentos de su código PHP. Estás almacenando en caché PHP para Drupal pero técnicamente no estás interactuando con Drupal.

Caché de Base de Datos

Las llamadas para obtener información de la base de datos son caras.

El mecanismo de almacenamiento en caché más común de la base de datos es memcache .

Esto almacena en caché los objetos de la base de datos en la RAM, por lo que en lugar de hacer una llamada a un objeto de la base de datos en el disco duro, simplemente lo extrae de la RAM, que es mucho más rápido.

Dominic Woodman
fuente
1
Redis también es un gran almacén de caché en memoria, al menos comparable con memcache en mi experiencia (aunque memcache probablemente gana con la agrupación)
Clive