web-dev-qa-db-fra.com

Comment puis-je améliorer les performances de mon site Drupal7?

Pour quelqu'un qui est nouveau sur Drupal, je vois qu'il existe de nombreuses ressources disponibles sur Drupal Caching mais je ne sais pas lequel utiliser.

10
Gokul N K

Ce sont des notes de mes expériences et peuvent différer de celles des autres. J'utilise principalement la pile LAMP et j'ai considéré la même chose dans mes suggestions.

Règles du pouce pour la mise en cache que je respecte généralement.

  1. Traitez une fois plusieurs fois.
  2. Vivez avec des données périmées lorsque cela est possible
  3. Effacez rarement les caches et restez très précis.
  4. Lorsque cela est possible, effectuez les modifications au niveau le plus bas de la pile. LAMP - DCCc: Linux, Apache, Mysql, PHP, Drupal Core, Contrib et module personnalisé.

Amélioration des performances d'un site Drupal (dans l'ordre croissant de complexité)

  1. Gardez le noyau à jour, le module contrib et les thèmes mis à jour. Oui c'est important.

  2. Installez APC sur votre serveur. (Déplacé vers le haut sur la base d'une suggestion de Letharion)

  3. Mise en cache des pages: admin/config/development/performance Différence entre la durée de vie minimale du cache et l'expiration des pages mises en cache

  4. Mise en cache des blocs https://drupal.org/project/blockcache_alter Options de mise en cache pour tous les blocs.
  5. Agréger les fichiers javascript et css - Améliorations frontales https://www.drupal.org/project/advagg
  6. Désactivez les modules inutiles. Chaque module ajoute à la quantité de code qui doit être disponible pour un chargement de page. Et cela augmente également le nombre de recherches. Dans la mesure du possible, utilisez un module générique à la place de plusieurs modules qui font des fonctionnalités spécifiques.
  7. Cache Views content - Mise en cache sensible au contenu pour les vues https://www.drupal.org/project/views_content_cache
  8. Désactiver la journalisation des bases de données - Utilisez https://drupal.org/project/syslog_ng
  9. Réduisez les erreurs 404 - http://www.brokenlinkcheck.com/
  10. Réponses rapides 404 - https://drupal.org/project/fast_404 - Essayez de gérer au niveau du serveur.
  11. Validations côté client - https://www.drupal.org/project/clientside_validation
  12. Compresser l'image - https://www.drupal.org/project/imageapi_optimize
  13. Chargement d'images paresseux - Ne chargez pas d'images inutiles - https://www.drupal.org/project/lazyloader
  14. Utiliser des feuilles de sprites - https://www.drupal.org/project/spritesheets

  15. Définissez la valeur de durée de vie minimale du cache sur un nombre plus élevé et utilisez des modules d'effacement du cache pour effacer les caches de pages spécifiques - Chaque fois que je modifie/mets à jour un nœud, tous les caches de pages pour les utilisateurs anonymes sont perdus

  16. Utilisez le module Devel pour regarder les requêtes.
  17. Réécrire les requêtes de vues/éviter les vues si c'est excessif.
  18. XHProf - https://www.drupal.org/project/XHProf
  19. FPM, HHVM.
  20. Profilage et réglage de la base de données - https://www.drupal.org/project/dbtuner
  21. Utilisez Boost , ne faites pas Bootstrap DB si non requis. https://drupal.org/project/boost Pour la plupart des sites de petite à moyenne taille, Boost est suffisamment bon et vous n'aurez peut-être pas besoin de proxy inversé.
  22. Utilisez les CDN - https://www.drupal.org/project/cdn C'est facile à configurer.
  23. Si vos tables de cache sont énormes, utilisez Memcached - Si vous pouvez installer memcached et configurer RAM pour cela, ce n'est pas aussi complexe qu'il y paraît.
  24. Etags - Configurez correctement les Etags. https://developer.yahoo.com/blogs/ydnfiveblog/high-performance-sites-rule-13-configure-etags-7211.html
  25. Utilisez Reverse Proxy Server - Vernis (au moins pour les ressources). Aide beaucoup si la plupart de vos utilisateurs sont anonymes.
  26. Transfert compressé - Activer la compression gzip
  27. Keep Alive - Utilisez des connexions persistantes lorsque cela est possible.
  28. JPEG progressif -
  29. CACHING IN CODE - Le blog d'Eaton est génial. http://www.lullabot.com/blog/article/beginners-guide-caching-data-drupal-7
  30. Implémenter le réchauffement du cache - https://www.drupal.org/project/cache_warmer - Réchauffer le cache des pages avant que l'utilisateur final ne les frappe.
  31. Master Slave DB Config - https://www.drupal.org/project/autoslave vous facilite la configuration.
  32. Clusters de base de données - https://stackoverflow.com/questions/1163216/database-cluster-and-load-balancing
  33. Équilibreurs de charge - http://en.wikipedia.org/wiki/Load_balancing_ (computing)
  34. Utiliser le réchauffement du cache heuristique - https://www.drupal.org/project/cache_graceful
  35. Mise en cache des utilisateurs authentifiés - https://www.drupal.org/project/authcache
26
Gokul N K

La couche de base de données est importante. J'en couvre certaines parties et les bases dans cette présentation http://goo.gl/30yi39

5
mikeytown2

En complément de la réponse de Gokul, voici la façon dont je penserais à ce que vous voulez mettre en cache dans Drupal (non ordonné par complexité):

La mise en cache signifie accélérer les activités répétées.

Les grandes actions de répétition impliquées dans un site Web Drupal sont:

  • Appel d'une page Web
  • Exécuter PHP code pour construire une page Web
  • Éléments d'appel PHP à partir de la base de données

Mise en cache d'une page Web entière

Les gains de mise en cache les plus importants doivent être obtenus en trouvant un moyen de mettre en cache une page Web entière sans jamais exécuter le code PHP ou appeler la base de données.

Vous pouvez le faire avec Vernis ou Boost . Lorsqu'un utilisateur appelle une page, il retourne une copie de la page sans jamais faire de calcul.

Cependant, cela ne fonctionnera pas si certaines parties de la page doivent être différentes (c'est-à-dire que les utilisateurs se connectent et que leur nom apparaît en haut).

Pour que cela fonctionne, vous devez examiner Authcache.

Mise en cache PHP

Vous pouvez mettre en cache PHP avec APC , ou si vous avez la version 5.5 ou supérieure, un cache différent est intégré.

Cela se fait côté serveur et signifie que des morceaux de votre code PHP seront mémorisés. Vous mettez en cache PHP pour Drupal mais vous n'interagissez pas techniquement avec Drupal.

Mise en cache de la base de données

Les appels pour récupérer des informations dans la base de données sont coûteux.

Le mécanisme de mise en cache de base de données le plus courant est memcache .

Cela met en cache les objets de base de données dans la RAM, donc au lieu d'appeler un objet de base de données sur le disque dur, vous le tirez simplement de la RAM qui est beaucoup plus rapide.

3
Dominic Woodman