Comment améliorer le temps de réponse du serveur?

17

Que puis-je faire, à part utiliser un plugin de cache comme jotcache, pour améliorer le temps de réponse du serveur de mon site Web?

J'ai déjà supprimé tous les modules, plugins et composants d'articles inactifs, puis-je faire autre chose pour l'améliorer?

Je parle du temps avant que le client (navigateur) ne reçoive une réponse à sa demande . Et pas l'heure de chargement de la page.

web-tiki
la source
Le temps de réponse est le temps avant la fin du document php, vous devez donc regarder les appels sql et php, puis mettre en cache les questions html que je suggérerais
tristanbailey
Quand vous parlez du temps de réponse du serveur - voulez-vous dire la réponse du serveur lorsque la demande est faite pour la première fois ou voulez-vous dire le temps qu'il faut au serveur pour préparer et servir la page? Exécutez votre site via le test de vitesse Pingdom et publiez les résultats afin que nous puissions vous donner des solutions spécifiques au problème réel.
Brent Friar

Réponses:

25

Vous pouvez prendre plusieurs mesures pour augmenter les performances côté serveur. Notez que certains d'entre eux ne fonctionneront pas avec la plupart des hôtes partagés. Pour de grandes performances, vous avez généralement besoin d'un contrôle plus fin.

Comme pour toute optimisation, vous devez mesurer son effet sur les performances de votre site. Pour les optimisations de base, des outils comme PageSpeed et YSlow sont utiles (je recommande les versions de Firefox). Pour une compréhension plus approfondie, vous devrez mesurer les temps de réponse réels de votre système en direct sur une période de temps.

PHP

  1. Activer la mise en cache Opcode

    C'est probablement la plus grande chose que vous puissiez faire pour augmenter les performances de votre site. Je recommande d'utiliser OpCache ou APC . La configuration de ces caches peut être modifiée pour des performances encore plus grandes en fonction des besoins spécifiques des serveurs et des sites, mais l'installation est déjà un énorme coup de pouce.

  2. Mettre à jour la version PHP

    Des versions PHP plus récentes viennent régulièrement avec des améliorations de performances. De plus, il existe un certain nombre de cas où Joomla peut utiliser un meilleur code lors de l'exécution sur une version PHP plus récente. À ce jour, vous ne devez pas utiliser une version PHP plus ancienne que PHP 5.4 si vous vous souciez des performances.

  3. Paramètres PHP

    Sur les anciennes versions de PHP (<= 5.3), veillez à désactiver register_globalset magic_quotes_gpcà gagner des performances gratuitement. Sur PHP> = 5,6 passer always_populate_raw_post_dataà -1.

  4. Extensions PHP

    Joomla contient du code pour contourner les extensions PHP manquantes. Ce sera toujours plus lent que ces extensions. Pour une amélioration de la performance décente installer les extensions suivantes: mbstring, zip,ftp

Serveur Web

  1. Activer gzip

    L'activation de la compression côté serveur échange la bande passante pour les ressources CPU. Pour la plupart des sites, c'est le bon appel. Faites attention à ne compresser que les données texte, la compression des données binaires vous donnera le hit du CPU sans les avantages de la bande passante. Vous pouvez également activer la compression dans les paramètres Joomla, mais il est préférable de laisser le serveur gérer cela.

  2. Précompresser les ressources statiques

    Je ne parle pas de minfication (bien que cela aide aussi) mais vous pouvez configurer Nginx et Apache pour serveur des ressources déjà compressées, éliminant efficacement le CPU hit de la compression gzip. Points bonus: utilisez Zopfli pour des fichiers encore plus petits.

  3. Utilisez FastCGI pour PHP

    Plus précisément, vous devez utiliser php-fpm. Cela empêche le démarrage de PHP lorsque le navigateur demande un fichier non PHP.

  4. Utilisez les en-têtes de cache appropriés

    L'utilisation de l'en- Expirestête peut réduire considérablement les ressources du serveur requises. Après tout, la demande la plus rapide est celle qui n'a jamais été faite.

Apache

En général, je recommanderais d'utiliser Nginx pour les sites haute performance. Si vous avez absolument besoin d'utiliser Apache pour une raison quelconque, j'ai reçu un conseil bonus:

  1. Désactiver AllowOverride

    Réglage AllowOverridepour Noneempêcher un grand nombre de disque IO et

Joomla

  1. N'utilisez pas le mode FTP

    Bien que cela n'affecte pas vos utilisateurs lisant le site, cela ralentira certaines opérations telles que l'installation d'extensions.

  2. Désactiver les extensions inutilisées

    Cela vaut en particulier pour les plugins, beaucoup d'entre eux sont exécutés à chaque demande. La désactivation des menus et des composants est principalement utile lors de la liste des extensions et des types de menu disponibles. Prenez également 5 minutes pour parcourir les extensions fournies avec le noyau Joomla et désactivez celles que vous n'utilisez pas.

  3. Désactivez Préparer le contenu

    Si vous utilisez beaucoup de modules personnalisés ( mod_custompas personnalisés comme dans l'auto-écriture), vérifiez si vous pouvez désactiver Préparer le contenu dans ceux-ci. Cela économise du traitement.

  4. Utiliser la mise en cache

    Si vous êtes sérieux au sujet des performances, vous voudrez activer la mise en cache. Particulièrement utile pour lire des sites lourds avec de nombreux utilisateurs anonymes. Les utilisateurs connectés contourneront la plupart du cache, si vous en avez beaucoup, l'effet ne sera pas aussi important.

  5. Utiliser un gestionnaire de session alternatif

    En utilisant un gestionnaire de session alternatif, vous pouvez libérer votre base de données pour des choses plus importantes. Je ne recommanderais pas le fichier (appelé confusément Aucun dans les paramètres Joomla) car cela entraînerait une nouvelle augmentation de l'ES disque. L'utilisation d'APC est potentiellement le fastet mais augmente le risque de perdre toutes les données de session. Le juste milieu est Memcache. Bien que cela nécessite un processus supplémentaire, il est plus fiable que APC et beaucoup plus rapide que le stockage de toutes les données dans la base de données

  6. Gardez votre site simple

    Avez-vous vraiment besoin de ce bouton Facebook? Qu'en est-il de cette jolie icône que personne ne voit jamais parce qu'elle est en partie cachée derrière une bannière? Moins votre site affiche, plus il sera rapide. Dans la mesure du possible, utilisez également CSS3 au lieu d'images.

Divers

  1. Définir un favicon

    Grâce à une décision remontant aux navigateurs Internet Explorer 4.0, faites une demande vers un fichier appelé favicon.icochaque fois qu'un utilisateur visite votre site. Si vous n'en avez pas, cela entraîne des E / S inutiles, car les réponses 404 ne sont pas mises en cache. Spécifiez l'icône de votre site avec une balise Meta HTML ou ajoutez un fichier appelé favicon.icoà la racine Web. Vous ne voulez pas de favicon? Placez un PNG transparent d'une taille de 1x1 pixel à cet endroit. Notez que l'extension doit toujours l'être .ico.

  2. Optimisez vos images

    Il est étonnant de voir à quel point on peut économiser en optimisant les images, en particulier les fichiers PNG. Il existe une variété d'outils disponibles pour tout système d'exploitation, personnellement j'utilise ImageOptim qui est disponible pour OS X. Les images de base de Joomla sont déjà optimisées mais parcourez vos propres images, en particulier les modèles sont importants. Vous pouvez également vérifier les extensions que vous utilisez. S'ils sont open source, pourquoi ne pas contribuer à une demande de pull contenant des images nouvellement optimisées?

Les avancés

Si vous voulez vraiment tout faire, pensez à mettre Varnish devant votre site. Il met en cache les demandes sur votre site et, si possible, les sert à partir de son propre cache, sans jamais toucher Joomla. C'est un outil complexe mais avec beaucoup de puissance. Joomla ne bénéficiera pas de fonctionnalités avancées comme Edge Side Include (ESI), mais votre propre code le pourrait.

Rouven Weßling
la source
8
Cela semble ... plutôt hostile. Juste pour info, je viens d'écrire ceci, le texte n'était en aucune façon préparé. N'hésitez pas à le rechercher sur Google. N'oubliez pas que les réponses ne devraient pas seulement aider le questionneur d'origine, mais aussi les futurs utilisateurs qui trouveront leur chemin ici aussi.
Rouven Weßling
13

Une GRANDE chose que vous pouvez faire pour améliorer les temps de réponse de votre site est de mettre à jour les paramètres de votre module. Les modules personnalisés (utilisant mod_custom) ont une option pour activer / désactiver la préparation du contenu. Cela vous permet d'exécuter des plugins de contenu sur le contenu des données dans votre module personnalisé. Il est puissant lorsqu'il est utilisé correctement, mais il ajoute du temps de rendu supplémentaire à la sortie du module. À moins que vous n'utilisiez réellement un plugin de contenu dans le contenu de votre module personnalisé, il est préférable de le désactiver. Vous verrez une diminution du temps de rendu du module lorsque vous effectuez cette opération.

Capture d'écran du paramètre: entrez la description de l'image ici

Remarque: Si ma réponse vous a aidé, veuillez cliquer sur la coche à gauche pour accepter la réponse.

Don Gilbert
la source
3
Je n'ai jamais vu la section Préparer le contenu auparavant. À quelle version de Joomla cela s'applique-t-il?
TryHarder
1
s'il est activé, les plugins peuvent s'exécuter sur le contenu. Donc, si vous placez des codes courts de positions de module ou d'autres codes courts de plugin dans la zone de texte HTML personnalisée, ceux-ci ne s'afficheront pas, vous verrez juste par exemple "{tag_name}" dans le site Web et non la version préparée
tristanbailey
2
L'option "Préparer le contenu" est incluse dans Joomla 2.5 et 3.x. Le paramètre par défaut est "Non".
Neil Robertson
8

Je suppose que vous avez exécuté votre site à la vitesse de la page Google, et vous cherchez en effet à réduire le temps de réponse de la page, c'est-à-dire le temps mis par votre balisage pour être envoyé au navigateur.

Les coupables les plus probables sont les requêtes lourdes. Activez le débogage et regardez au bas de la page pour savoir quelles sont les requêtes les plus lourdes et supprimez-les ou réduisez-les. Vous pouvez également utiliser les journaux de requêtes lentes de votre serveur MySQL.

La prochaine chose que vous pouvez regarder est la mise en cache. Selon le type de site que vous avez, vous pouvez désactiver la mise en cache conservatrice ou progressive. Progressive doit être utilisé sur des sites qui ne disposent pas de fonctionnalités liées à l'utilisateur.

Date Ashwin
la source
Pouvez-vous fournir des conseils ou des captures d'écran de ce à quoi ressemblent les requêtes lourdes? Y a-t-il un seuil à atteindre?
David Fritsch
Cela dépend vraiment de votre application. Cependant, toute requête qui arrive dans le journal des requêtes lentes (qui, dans des paramètres normaux, enregistre toute requête dont l'exécution prend plus d'une seconde) est un bon candidat pour la décomposition et / ou la mise à l'intérieur d'un cache. Une autre chose qui peut sembler stupide, mais assurez-vous que toutes les requêtes ont une LIMITE.
Ashwin Date
6

Les choses que je sais qui peuvent aider (dont la plupart ont été répertoriées) sont les suivantes:

  1. Mise en cache
  2. Compression (gzipez vos fichiers css et js)
  3. Combiner des fichiers (tous vos CSS sont combinés en un seul fichier)
  4. Déchargement d'images et de fichiers sur un CDN.

J'ai utilisé une combinaison du cache Joomla intégré (ou même APC activé sur le serveur) et des plugins comme gzip ou le plugin rockbooster du thème de la fusée. J'utilise également un plugin CDN nonumbers avec un compte Amazon.

Cela aide certainement, mais vous devez surveiller votre site et désactiver le cache pour les composants qui ont des problèmes. J'ai dû contourner CiviCRM sur notre site car il ne fonctionnait pas bien avec la mise en cache. Joomla est livré avec un plugin cachecontrol qui peut gérer cela.

Brian Peat
la source
2
combiner et compresser vos images aussi souvent que possible. Les sprites peuvent enregistrer des dizaines de demandes par chargement de page.
ContextSwitch
J'oublie toujours les sprites. :)
Brian Peat
faites attention à une chose concernant les images-objets - les images d'arrière-plan ne s'affichent pas lorsque Windows passe en mode Contraste élevé. Bien que ce comportement soit le bienvenu pour les graphiques généraux, c'est un problème pour les contrôles qui doivent être cliqués par l'utilisateur - ils disparaissent simplement (exemple: boutons de vote sur ce site)
miroxlav
Heh Brian Peat, je me demande si vous pourriez être intéressé à nous aider à lancer un site CiviCRM sur StackExchange. Nous avons besoin de committers qui ont plus de 200 points de réputation sur un autre site StackExchange : area51.stackexchange.com/proposals/77367/civicrm Cheers!
Joe Murray
Je regarderai. Tout était basé sur Joomla et je n'ai fait aucune programmation, mais je pourrais peut-être aider avec des questions de base.
Brian Peat
4

Vous voudrez également examiner la réduction des actifs locaux et la mise en cache appropriée. Une chose que vous pouvez faire est d'utiliser des plugins CDN. Voici deux que je recommanderais:

'corePHP' jomCDN - https://www.corephp.com/joomla-products/jomcdn

NoNumbers CDN pour Joomla! - http://www.nonumber.nl/extensions/cdnforjoomla

De plus, si aucun des éléments ci-dessus ne semble résoudre les problèmes, vous pouvez avoir un problème plus profond - éventuellement dans votre modèle, le serveur lui-même ou d'autres choses. Si tel est le cas, il serait préférable d'engager quelqu'un pour traquer le problème et le résoudre pour vous.

Steven Pignataro
la source
3

Vous pouvez également utiliser ce code dans votre fichier .htaccess:

RewriteEngine On
RewriteCond %{HTTP_HOST}  ^www.your domain [nocase]
RewriteRule ^(.*)         http://your domain/$1 [last,redirect=301]
RewriteEngine on
<ifmodule mod_deflate.c>
AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
</ifmodule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
معاملات فصلی
la source
cela semble intéressant, pouvez-vous expliquer ce qu'il fait?
web-tiki
@ web-tiki Ce paramètre expire les en-têtes. Les en-têtes expirés indiquent au navigateur s'ils doivent demander un fichier spécifique au serveur ou s'ils doivent le récupérer dans le cache du navigateur. L'idée derrière Expires Headers est non seulement de réduire la charge de téléchargements depuis le serveur (télécharger constamment le même fichier lorsqu'il n'est pas modifié est une perte de temps de chargement précieux) mais plutôt de réduire le nombre de requêtes HTTP pour le serveur. RÉFÉRENCE gtmetrix.com/add-expires-headers.html
TryHarder
2

J'ai créé plus de centaines de sites Web en utilisant Joomla!

Dans la plupart des cas, les gens pensent que Joomla travaille énormément sur le serveur, mais selon les analyses effectuées par moi, la chose la plus importante pour garder votre site Web RAPIDE est d'OPTIMISER les IMAGES et JS / CSS.

N'utilisez pas les éditeurs Joomla, comme JCE, pour simplement changer la taille de l'image. Utilisez des éditeurs d'images comme Photoshop ou tout autre éditeur pour redimensionner vos images à la taille dont vous avez besoin!

Utilisez les outils de compression JS / CSS.

Nous utilisons toujours les outils Pingdom pour analyser la vitesse du site Web et nous utilisons la fonctionnalité intégrée de T3 Framework pour optimiser JS / CSS!

Gev Balyan
la source
Quels outils utilisez-vous pour la compression JS / CSS? Avez-vous des recommandations sur la façon dont quelqu'un pourrait analyser son site Web comme vous l'avez fait pour vos sites?
David Fritsch
Nous utilisons toujours les outils Pingdom pour analyser la vitesse du site Web et nous utilisons la fonctionnalité intégrée de T3 Framework pour optimiser JS / CSS!
Gev Balyan
2
J'ai également utilisé avec succès JCH Optimiser pour réaliser une grande partie de la compression et de la minification. Une autre option consiste à utiliser mod_pagespeed d'Apache qui implémente essentiellement la plupart des recommandations de Google Pagespeed.
Ashwin Date
2
Tous les bons outils. @GevBalyan, je recommanderais d'ajouter des éléments comme celui-ci dans votre réponse avec des liens. Enregistre les gens sur Google! Vous pouvez même modifier cette réponse pour les ajouter à celle-ci. :)
David Fritsch
La compression d'outils qui ne mettent pas en cache peut en fait augmenter le temps de réponse du serveur, car elle ajoute du temps de traitement à la réponse du serveur.
Don Gilbert
1

Avez-vous supprimé les plugins inutilisés? Joomla doit charger et traiter chaque plug-in publié pour les événements déclenchés dans une demande.

Vous devez comprendre les extensions que vous avez installées et comment elles interagissent avec Joomla!

De nombreuses extensions installent des plugins qui gèrent le contenu, le système ou les activités des utilisateurs pour lancer des fonctions de code. Certains d'entre eux peuvent être superflus.

Je sais que k2 installe de nombreux plugins qui répondent aux événements liés à la langue qui ne produisent aucune sortie réelle pour les sites à langue unique. La non-publication de ces plugins peut réduire le temps de traitement.

Joomsavvy
la source
Pouvez-vous en parler davantage? Qu'entendez-vous par «événements déclenchés»? Comment savoir quels événements sont déclenchés?
David Fritsch
1
Bonne question. Vous devez comprendre les extensions que vous avez installées et comment elles interagissent avec Joomla! De nombreuses extensions installent des plugins qui gèrent le contenu, le système ou les activités des utilisateurs pour lancer des fonctions de code. Certains d'entre eux peuvent être superflus. Je sais que k2 installe de nombreux plugins qui répondent aux événements liés à la langue qui ne produisent aucune sortie réelle pour les sites à langue unique. La non-publication de ces plugins peut réduire le temps de traitement. De même, K2 a lui-même pris la mauvaise habitude de créer des requêtes coûteuses pour produire des mesures douteuses.
Joomsavvy
1
Pourriez-vous mettre à jour votre réponse avec des informations dans votre commentaire?
Harald Leithner le
1

Améliorer les ressources du plan d'hébergement de serveur / Web

Peut-être pas la réponse que l'OP recherchait mais mérite d'être mentionnée au cas où cela ne serait pas évident pour tout le monde (et aucune autre réponse ne l'a encore mentionné): améliorer les ressources du serveur telles que la mémoire, le processeur et la vitesse du disque.

Si vous utilisez un hébergement Web partagé, la mise à niveau du plan "économie" vers le plan "entreprise" ou un autre plan plus avancé peut améliorer les ressources du serveur disponibles sur votre site Web et réduire le temps de réponse du serveur. Le passage à une société d'hébergement de meilleure qualité (par exemple avec des serveurs d'hébergement Web partagés moins encombrés) pourrait également aider.

Un meilleur plan d'hébergement peut également vous donner accès à des améliorations de performances qui ne sont pas incluses dans le plan d'hébergement de base. Par exemple, les plans d'hébergement SiteGround «GrowBig» et «GoGeek» incluent un cache dynamique qui permet de réduire considérablement le temps de réponse du serveur. L'option de cache dynamique n'est pas disponible dans le plan "Démarrage".

Neil Robertson
la source