[spip-dev] Impact de la balise #FORMULAIRE_RECHERCHE sur les performances

Bonjour,

J'ai effectué un test de charge sur un site SPIP 2.0.8, avec les squelettes par
défaut de SPIP, contenant une seule rubrique et un seul article.

J'obtiens sur un Pentium IV 2.8 Ghz sous linux : 12 pages par secondes (pour la
page d'accueil) lorsque la page est dans le cache de SPIP.
Il n'y a pas de cache d'opcode, ni d'optimisation particulière sur le serveur.
L'objectif était seulement d'analyser l'impact de la balise
#FORMULAIRE_RECHERCHE sur les performances, sachant que cette balise figure
potentiellement sur la plupart des pages du site.

En supprimant la balise #FORMULAIRE_RECHERCHE du squelette de la page d’accueil
de SPIP, le nombre de pages par seconde double en passant de 12 à 24 pages par
secondes (la page étant dans le cache de SPIP).

J'ai noté que dans le résultat du fichier sommaire.html, qui est mis dans le
cache de second niveau de SPIP, la balise #FORMULAIRE_RECHERCHE est traduite par
le code php suivant :
$lang_select = lang_select("fr");
include_once(_DIR_RACINE . "ecrire/balise/formulaire_.php");
inclure_balise_dynamique(balise_FORMULAIRE__dyn('FORMULAIRE_RECHERCHE', '',
''),1, 92);
if ($lang_select) lang_select();

Ce code est exécuté chaque fois que l’on fait appel au cache de second niveau.

Aussi, j'ai opté pour un formulaire de recherche classique en HTML, sans
utiliser la balise #FORMULAIRE_RECHERCHE . C'est moins pratique qu'avec la
balise mais cela n'impacte pas les performances.

Cordialement

Bonjour,
très bonne remarque.

On aurait tout à gagner à passer le #FORMULAIRE_RECHERCHE en balise statique, car la balise dynamique ne fait aucun traitement, si ce n'est passer les infos au squelette.

Alternativement, et sans te compliquer la vie, tu peux avantageusement faire
#INCLURE{fond=formulaires/recherche,action=#URL_PAGE{recherche},recherche}

pour utiliser le formulaire de SPIP sans passer par la balise dynamique.

Cédric

Merci pour ces tests, et d'accord avec Cédric.
Ca confirme mon impression que l'inclusion par "<?php .. ?>" est aujourd'hui a évité:
ça pouvait se comprendre quand l'espace disque était compté, aujourd'hui non.
On ne devrait plus l'utiliser que pour les insertions vraiment dynamiques,
typiquement une authentification à faire chaque requête HTTP.

Committo,Ergo:Sum