Mesurer la performance du cache SPIP

© Christian PAULUS. Document créé le 8 septembre 2011 , mis à jour le 9 septembre 2011.

On n'est jamais heureux que dans le bonheur qu'on donne. Donner, c'est recevoir. Abbé Pierre

Accueil du site > Astuces > SPIP > Mesurer la performance du cache SPIP

Performance / SPIP 2

Il est question ici de temps passé à générer le cache et de la comparer avec la livraison du cache par le serveur. Il ne prend pas en compte les modèles SPIP qui sont – eux – recalculés à chaque appel.

Il n’est pas question ici de qualité du cache, de sa construction.

La performance dépend de nombreux paramètres : la machine, la mémoire disponible pour l’application, le temps d’accès du disque dur, le système de fichiers, les modules apache installés, la charge (le nombre de sessions en cours), etc... Le chiffre mesuré ici n’est donc qu’un indicateur imprécis. Il existe de nombreux outils de mesure de performances qui satisferont probablement mieux les plus exigeants.

Au mieux, cette astuce vous permettra peut-être de choisir, en quelques copier/coller, un type d’hébergement Internet pour votre site sous SPIP ?

Pour calculer ce temps passé, le code nécessaire doit être placé dans le premier script PHP appelé par le serveur : index.php. Donc hors plugins, extensions, etc. C’est impératif !

L’inconvénient de cette démarche est que vous devez conserver ce script index.php en cas de mise à jour. Ou du moins reporter ces modifications dans le nouveau script installé par cette mise à jour.

Ceci dit, suivre la performance de génération du cache n’est probablement pas indispensable sur le long terme. Oublier de reporter ces lignes lors d’une mise à jour SPIP ne remettra pas en cause la production du site.

Mesurer la performance de toutes les pages du site

Si vous souhaitez mesurer la performance de toutes les pages de votre site, ce qui est illustré ci-dessous doit être appliqué au script spip.php. Ne modifier que index.php permet de mesurer la performance de la page d’accueil. Sauf à compléter l’URL manuellement par une requête du style : http://www.quesaco.org/index.php?page=article&id_article=387

Modifier le script index.php

Placez en tête de index.php le démarreur du chrono :

// mettre en place le compteur
$start_generate_microtime = microtime(1);

Et en fin de ce même script index.php, les quelques lignes :

// calculer le temps passé
$total = strval(microtime(1) - $start_generate_microtime).' ';
$pos = strpos($total, '.');
$result = intval(substr($total, 0, $pos));
$sec = ($result > 1 ? 'secondes' : 'seconde');
$result .= ','.substr($total, $pos + 1, 2);
echo ('<!-- '.$result.' '.$sec.' -->');

Le résultat n’est visible que dans le code source de la page, en fin de page, sous la forme, par exemple (cas d’un mac mini leopard) :

<!-- 0,19 seconde -->

Sur la page d’accueil de Quesaco, la génération du cache est 4 fois plus élevé que la lecture du cache généré.

Ne pas oublier qu’il s’agit ici de génération du cache. Ce qui ne veut pas dire temps de livraison du contenu sur le poste client. Et le contenu est parfois composé de plusieurs fichiers qui ralentissent d’autant le temps de chargement.

Un exemple complet de index.php

A partir de la distribution, voici un script index.php en illustration de ce billet :

<?php

$start_generate_microtime 
microtime(1);

    
# appel SPIP
    
include ('spip.php');
    
    
// calculer le temps passé
$total strval(microtime(1) - $start_generate_microtime).' ';
$pos strpos($total'.');
$result intval(substr($total0$pos));
$sec = ($result 'secondes' 'seconde');
$result .= ','.substr($total$pos 12);
echo (
'<!-- '.$result.' '.$sec.' -->');
?>

Plussoyez !

Les forums sont fermés.