Drupal est rapide à développer, mais les performances sont si médiocres. Il est difficile d'atteindre 50 requêtes par seconde.
Et il y a tellement de requêtes SQL dans une simple page Web. Si vous testez l'heure de demande d'un formulaire soumis dans Drupal.org, cela prendra toujours quelques secondes.
Comment améliorez-vous la vitesse de votre site Web?
Mise en cache, mise en cache et mise en cache.
Quelques suggestions que j'ai déjà faites à une question similaire sur d.o.
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.
Amélioration des performances d'un site Drupal (dans l'ordre croissant de complexité)
Gardez le noyau à jour, le module contrib et les thèmes mis à jour. Oui c'est important.
Installez APC sur votre serveur. (Déplacé vers le haut sur la base d'une suggestion de Letharion)
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
Utiliser des feuilles de sprites - https://www.drupal.org/project/spritesheets
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
Boost module est également très utile, il crée des caches de fichiers statiques à partir de vos pages Web. C'est principalement pour les sites Web avec beaucoup de trafic d'utilisateurs anonymes.
Boost fournit une mise en cache de page statique pour Drupal permettant une amélioration très significative des performances et de l'évolutivité pour les sites qui reçoivent principalement du trafic anonyme. Pour l'hébergement partagé, c'est votre meilleure option en termes d'amélioration des performances. Sur les serveurs dédiés, vous voudrez peut-être envisager le vernis à la place.
Apache est entièrement pris en charge, avec Nginx, Lighttpd et IIS 7 semi-pris en charge. Boost mettra en cache et gzip compressera html, xml, ajax, css et javascript. Augmente la logique d'expiration du cache est très avancé; il est assez simple d'avoir différentes durées de vie du cache pour différentes parties de votre site. Le robot d'exploration intégré garantit que le contenu expiré est rapidement régénéré pour un chargement rapide de la page.
Il convient de mentionner que si vous utilisez le pilote de base de données SQLIte, vous devrez peut-être désactiver la synchronisation du disque.
/**
* Implements hook_init().
*/
function HOOK_init() {
db_query('PRAGMA synchronous = OFF');
}
Sur certaines configurations de serveur, cela améliorera considérablement les performances.
Le secret de la performance de Drupal est dans la mise en cache et en suivant les bonnes pratiques. Suggestions:
defer
ou async
.Si vous prévoyez une charge élevée pour votre site Web, utilisez Varnish. Pensez également à utiliser CDN.
En savoir plus sur: Expérience du monde réel en matière de mise à l'échelle et de réglage des performances
Autres ressources:
Il existe un livre intitulé High Performance Drupal qui fournit les meilleures pratiques, des exemples et des explications détaillées pour résoudre plusieurs problèmes de performances et d'évolutivité. Vous apprendrez à appliquer les techniques de codage et d’infrastructure aux composants internes Drupal, aux performances des applications, aux bases de données, aux serveurs Web et à l’analyse des performances.
Dans l'article Performances et évolutivité dans Drupal 7 vous pouvez trouver des exemples de Drupal 6 et Drupal 7 et la liste suivante:
Projets de performance et d'évolutivité Drupal 7 à surveiller:
- https://www.drupal.org/project/agrcache
- https://www.drupal.org/project/apc
- https://www.drupal.org/project/beanstalkd
- https://www.drupal.org/project/boost
- https://www.drupal.org/project/cdn
- https://www.drupal.org/project/core_library
- https://www.drupal.org/project/entitycache
- https://www.drupal.org/project/efq_views
- https://www.drupal.org/project/hash_wrapper
- https://www.drupal.org/project/labjs
- https://www.drupal.org/project/headjs
- https://www.drupal.org/project/media_Amazon
- https://www.drupal.org/project/memcache
- https://www.drupal.org/project/mongodb
- https://www.drupal.org/project/performance_hacks
En tant que développeur principal, il est toujours possible d'améliorer votre code pour améliorer les performances du site Web. Certaines directives pour les développeurs backend pourraient être:
1) Nettoyez votre table de surveillance
2) N'abusez pas de l'API variable
3) Faire moins ou mieux de requêtes HTTP
4) Gardez votre "module dot" court
En ce qui concerne les constructeurs de polices et les constructeurs de sites, beaucoup plus peut être accompli, mais il est important de prendre en considération les performances à tous points de vue.
Il existe quelques possibilités d'améliorer Drupal la vitesse à un niveau raisonnable sans installer de nouveaux modules. Oui, Drupal a une configuration de performances.
Activer les "fichiers JavaScript agrégés"
Une fois ces configurations définies, accédez à: YourSiteDomain/admin/reports/status
Et maintenant, vous avez terminé avec l'optimisation de la vitesse pour votre site drupal 7.
Il existe peu d'outils de test de vitesse en ligne pour vérifier la vitesse. Assurez-vous d'utiliser l'un des outils de vérification de la vitesse et d'exécuter un test avant de mettre à jour les paramètres ci-dessus. Et une fois que vous avez mis à jour le paramètre de performances, exécutez à nouveau le test de vitesse. Vous verrez certainement une amélioration.
Pingdom et HTTP Fox (plugin FireFox) sont les meilleurs outils pour vérifier la vitesse du site.
Les paramètres ci-dessus mettent non seulement vos pages en cache pour les utilisateurs anonymes, mais également les fichiers CSS et JS. Par exemple, si votre site charge 80 fichiers, publiez ces paramètres, le nombre de demandes sera réduit à au moins 50%. Vous avez donc ici une amélioration de la vitesse 2x sur votre Drupal site.
Il y a eu beaucoup de réglages pour optimiser les performances de votre site Drupal - mais pas tous sont impératifs cependant. Nous devons chercher autour de certaines alternatives et techniques qui conduiraient à une plate-forme d'optimisation de Drupal. Cache, oui, c'est un moyen d'optimiser le site Web par différents moyens, mais d'autres modules complémentaires et astuces peuvent augmenter et affiner votre site Web sans aucun processus sans tracas à entreprendre.
Nous avons récemment publié un article similaire sur notre site Web qui, je crois, pourrait vous aider à effectuer quelques travaux sur Tweak.
Source: http://www.cloudreviews.com/blog/drupal-performance-optimization-tips
Un site Drupal 7 non optimisé avec 2 Go de RAM peut servir environ 20-25 requêtes par seconde de manière satisfaisante. Si vous voulez aller plus loin, le site nécessiter quelques ajustements. Ce que vous Tweak dépend si la plupart des utilisateurs du site sont anonymes ou authentifiés. Voici les principales choses que vous pouvez faire pour améliorer les performances:
Le site est principalement destiné aux utilisateurs anonymes:
1) Installez et configurez définitivement APC, memcache et entitycache.
2) Mettez le proxy Varnish devant le serveur Web. Il faut environ 30 minutes pour installer et configurer, mais cela réduira considérablement les temps de chargement de vos pages. En fait, Varnish peut gérer environ 300 requêtes par seconde sur une machine de 2 Go si toutes les pages sont mises en cache. Utilisez le module Expirer pour expirer uniquement les pages sélectionnées lors de la mise à jour/suppression de contenu.
3) Utilisez le module d'agrégation CSS/JS avancé pour agréger les fichiers CSS et JS. Essayez de déplacer tous les fichiers JS en bas de la page. Mais notez que cela peut casser votre site, alors implémentez-le en production après des tests approfondis. Essayez également d'inclure les CSS critiques. D'après mon expérience, cela réduira le temps de chargement des pages d'environ une demi-seconde.
4) Les images CSS/JS/devraient avoir un en-tête d'expiration très éloigné. Cela garantira que les navigateurs ne demanderont pas les mêmes images CSS/JS/encore et encore.
5) Assurez-vous que le serveur Web sert des pages compressées/CSS/JS.
Après avoir mis en œuvre les 5 étapes ci-dessus, votre serveur de 2 Go RAM devrait pouvoir gérer assez facilement 50 requêtes par seconde.
Le site sert principalement des utilisateurs authentifiés:
L'optimisation d'un tel site est plus complexe. Ces sites entrent dans l'une des deux sous-catégories à des fins d'optimisation:
(a) La plupart des pages du site sont identiques sauf 1 ou 2 blocs qui contiennent des informations spécifiques à l'utilisateur. Par exemple Drupal Site de commerce.
(b) La plupart des pages sont entièrement personnalisées pour l'utilisateur. Par exemple Drupal site Commons.
Si votre site appartient à la catégorie (a), appliquez la plupart des techniques dont nous avons parlé pour le site destiné principalement aux utilisateurs anonymes. La seule différence est que pour les pages non admin, Varnish devra supprimer le cookie SESSION de l'en-tête et servir les pages mises en cache. Utilisez AJAX Module de bloc pour bloquer les blocs avec des informations spécifiques à l'utilisateur en utilisant AJAX. De cette façon, la majeure partie de la page sera servie extrêmement rapidement en utilisant Varnish, puis les informations spécifiques à l'utilisateur seront servies via AJAX.
Si votre site appartient à la catégorie (b), utilisez le module Authcache. Je préfère ne pas l'utiliser autant que possible car il nécessite pas mal de configuration et de maintenance. Mais cela fonctionne vraiment bien. Ce ne sera pas aussi rapide que d'utiliser Varnish mais il sera capable de gérer 50 requêtes par seconde que vous recherchez.
Si vous cherchez à aller au-delà de ce que nous avons discuté ici, alors jetez un œil à Drupal Performance Optimization Checklist . Divulgation: C'est écrit par moi. Il cite une liste exhaustive des choses que vous pouvez faire pour rendre votre site Drupal rapide) flamboyant.