Un moteur de blog plus rapide que PluXml ? euu... PluXml ?
Vous allez me dire... PluXml n'est pas lent, on ne vas pas y gagner grand chose. En effet, avec mes articles et mes commentaires j'arrive à 0.054s (j'ai ajouté un compteur en bas de page). Maintenant nous allons voir comment descendre en dessous voir diviser le temps par plus de 2 (c'est un minimum avec 60 articles et 30 commentaires, mais quand on a des centaines d'articles ça peut diviser le temps par 10).
Après quelques tests il s'avère que la seule chose qui prend réellement du temps dans PluXml est l'affichage de la liste des dernier articles et commentaires (regardez dans ma sidebar).
La technique que nous allons utiliser est la mise en cache. Ce système de mise en cache est ultrarapide à mettre en place d'autant plus qu'il se met dans le dossier du thème et qu'il n'y a donc pas besoin de le refaire quand on change de version de PluXml. L'autre avantage de ce système est qu'il se met à jours automatiquement, ainsi il vérifie périodiquement qu'il n'y a pas de nouvel article ou de nouveau commentaire et se met à jours dans le cas échéant.
J'arrête de vous faire attendre, nous allons passer au code tout de suite.
Le fichier staticcache.php à mettre dans le répertoire du thème.
Il faut maintenant modifier le fichier sidebar.php de votre thème (voir un exemple : sidebar.php.txt):
Ajouter include_once(PLX_ROOT.'themes/'.$plxMotor->style.'/staticcache.php');
au debut du fichier, après le if(!defined('PLX_ROOT')) exit;
.
Ajouter if(plxCache::startCache('sidebar', $plxMotor)) {
juste en dessous si vous voulez tout mettre en cache.
Ajouter <?php } plxCache::stopCache('sidebar', $plxMotor);?>
à la fin du fichier.
Quelques explications : Ce script utilise ob_start();
, une fonction de php permettant d'enregistrer la sortie texte de php. C'est à dire que l'on sauvegarde tout ce qui est écris entre ob_start()
et ob_end_clean();
. Le texte est récupéré à l'aide de ob_get_contents();
.
Coté PluXml, on récupère la date de modification du dossier (si si, ça fonction, la fonction filemtime
permet aussi de traiter les dossiers.). Le fichier cache est nommé en fonction de la date du dernier commentaire et article. Si cela change le script recrée un fichier cache et supprimer l'ancien.
La seconde partie qui prend plus de temps est l'affichage des articles dans la page home.php :
Ajouter include_once(PLX_ROOT.'themes/'.$plxMotor->style.'/staticCache.php');
avant la boucle d'affichage :
if(plxCache::startCache($plxShow->plxMotor->page.'home', $plxMotor)) {while($plxShow->plxMotor->plxRecord_arts->loop()): # On boucle sur les articles
.
On ajoute la la cache (} plxCache::stopCache($plxShow->plxMotor->page.'home', $plxMotor);
) après la fin de la boucle : endwhile;
.
Comme vous avez pu le remarquer, on ne spécifie pas que le nom ('home') en paramètre, on ajoute aussi $plxShow->plxMotor->page
qui est le numéro de la page courante sans quoi on verrait à toutes les pages le contenu de la première.
Attention tout les fichiers sont stockés dans le dossier plxCache, assurez-vous avec un client FTP que l'écrite s'est bien faite. Vous remarquerez que la mise en cache du fichier home.php génère un grand nombre de fichiers dans ce répertoire, un par page, à vous de voir si c'est vraiment judicieux.
Voilà, j'espère que vous avez compris le fonctionnement. Vous pouvez poser vos question en commentaire. J'espère aussi que vous avec compris qu'avec ce système c'est Wordpress qui va aller se cacher :-).
13 commentaires