dotclear,cache,mémoire

Vous connaissez très certainement APC, APC est un cache mémoire pour PHP :

http://pecl.php.net/package/APC

APC permet de stoker des données en mémoire et de pouvoir les récupérer rapidement. C'est un endroit de stockage persistant, rapide d'accès, avec une gestion automatique de la durée de vie des données stockées.

Voici les modifications que j'ai réalisées sur Dotclear2 pour cacher l'ensemble des pages compilées.
Ces modifications permettent à Dotclear d'éviter de régénérées les pages à chaque demande, cela permet donc d'économiser du CPU au niveau de l'interpréteur PHP et surtout au niveau de la base de données.

Pour profiter de cette modification, il faut bien entendu avoir installé et activé APC sur votre serveur Web.

  1. Editer le fichier "/inc/public/lib.urlhandlers.php"

  2. Cherchez la fonction "serveDocument" (aux environs de la ligne 47).

  3. Chercher la ligne :


$out = $core->tpl->getData($tpl);

  1. Remplacez la par :


$uri = http::getSelfURI();
if (count($_POST) > 0){
     $out = $core->tpl->getData($tpl);
     apc_delete($uri);
} else {
     $out = $core->tpl->getData($tpl);
     $page = array();
     $page['data'] = $out;
     $page['contentType'] = $content_type;
     apc_store($uri,$page,600);
}


  1. Editez le fichier "/inc/core/class.dc.blog.php"

  2. Cherchez la fonction "triggerBlog"

  3. Ajoutez à la fin de la fonction :


apc_clear_cache("user");

  1. Ouvrez le fichier index.php à la racine du blog et ajoutez ce code au début du fichier :


require_once 'inc/clearbricks/common/lib.http.php';
$uri = http::getSelfURI();

if (count($_POST) == 0){

   $page= apc_fetch($uri);

   if($page != null){
        header('Content-Type: '.$page['contentType'].'; charset=UTF-8');
        echo $page['data'];
        exit;
    }
}


Les pages compilées sont mises dans le cache mémoire APC et ont une durée de vie de 10 minutes.
Vous pouvez augmenter ou diminuer cette durée en fonction du trafic sur votre blog.
Lorsque le blog est mis à jour, le cache est purgé et les pages sont régénérées.

''Remarque : Cette modification désactive tous les plugins qui réalisent des actions en temps réel (compteur de visites, nombre de pages vues .. etc). Cette modification n'impacte pas des outils comme Google Analytics basés sur du Javascript.''

Des commentaires ?

''UPDATE : Un thread dans le forum Dotclear 2 a été initialisé''