Carnet Trucs et Astuces

Optimiser les performances de SPIP

SPIP-Contrib :: Carnet Wiki :: Carnet Trucs et Astuces :: Recherche :

Optimiser les performances de SPIP

  1. Ceci est une ébauche que chacun est invité à compléter...

Voici une tentative de synthèse de ce que l’on peut lire ici et là pour aider chacun à optimiser son site sous SPIP pour qu’il soit plus rapide.

Dans un premier temps, il faut préciser que SPIP embarque déjà, sans ajouts particuliers, une multitude d’outils automatiques d’optimisation des performances [1]. Cela signifie que la plupart des webmestres n’auront rien à faire pour obtenir des performances proches d’optimales. Mais, il y a certains cas, comme des sites à très fort trafic (combien ?... à définir), ou quand le(s) serveur(s) est(sont) sous-dimensionné(s), il est nécessaire de mettre la main à la pâte pour optimiser encore. Souvent, ces ajustements sont spécifiques du site, et c’est parce que leur généralisation n’est pas possible que ces méthodes ne sont pas intégrées par défaut dans SPIP.

À comprendre : les étapes du calcul d’une page par SPIP

À partir d’une page de squelette (ex. : squelettes/sommaire.html), SPIP va interroger la base de données pour récupérer le contenu nécessaire et construire une page HTML qu’il renvoie au navigateur. Ce calcul se fait en plusieurs étapes, notamment rappelées ici : http://www.spip-contrib.net/Optimisation-de-la-charge-serveur-SQL-et-var_profile

Pour une page donnée, on peut connaître les temps de ces trois calculs (je cite : http://www.spip-contrib.net/Optimisation-de-la-charge-serveur-SQL-et-var_profile) :


-   ?var_profile=1 (service du cache)
-   ?var_profile=1&var_mode=calcul (prise en compte des nouveautés de la base de donnée)
-   ?var_profile=1&var_mode=recalcul (recompilation = prise en compte des modifications du squelette)

Optimiser son site SPIP c’est donc travailler à réduire ces temps de calcul quand le visiteur veut afficher une page :

Quand un visiteur tente d’afficher une page d’un site sous SPIP, il existe d’autres temps d’attente que ces temps de calcul que l’on peut aussi souhaiter réduire :

Le cache et les inclusions : #INCLURE ou <INCLURE> ?

-  #INCLURE
-  <INCLURE>
-  la question des #MODELES
-  la question du PHP directement dans les squelettes
-  la question des balises #SESSION

Plus loin avec les caches de SPIP : temps de cache et invalidation, URL & cache, etc.

-  Le cache est déterminé par un temps de cache
-  chaque URL avec des paramètres différents provoque la génération d’un cache spécifique
-  chaque visiteur identifié provoque la génération d’un cache spécifique
-  la question de la taille du cache vs performance

Mesurer les performances de son SPIP : var_profile et autres techniques

-  var_profile
-  Page Speed
-  http://www.webpagetest.org/

Optimiser avec des plugins : agir sur le cache

-  memoization
-  cache cool
-  Fastcache
-  Expresso
-  microcache (utilisation ???)
-  fulltext
-  inclure ajaxload
-   ?

De la performance des plugins : pipelines et autres considérations

Les plugins utilisent des pipelines ou rajoutent des « fonctions » et des « options ». Si les calculs rajoutés sont lourds, cela peut avoir un impact sur le site.

-  mes_options à chaque hit
-  mes_fonctions à chaque calcul

Optimiser ses squelettes : la base de données

-  critères et index SQL
-  Champs extra/jointures

Optimiser ses squelettes : des boucles plus légères

-  inclusions (factorisation)
-  jointures
-  ajax
-  doublons ou array ?

Bibliographie :

à compléter, bien sûr !

[1Selon http://www.spip-blog.net/Drupal-et-..., SPIP optimise les requêtes SQL lors de la compilation, en plus de son système de cache à plusieurs étages.