[spip-dev] Re: [lautre-techos] Re: Problème de charge sur lautre3 (fwd)

Bonjour,

Remarque vue au sujet de spip et de son cache qui ne cacherait pas
assez...

Qu'en pensez-vous ?

  Yannick

PS: Il me semble que BohwaZ (est/a été) abonné à cette liste.

Hélas si car SPIP n'a pas un "vrai" système de cache hélas. Il ne fait pas que ressortir la page en cache, il exécute aussi quelques requêtes SQL et une ribambelle de code PHP. Ca n'est pas un vrai cache car on a des requêtes SQL et plein de code PHP. Personnellement mon système de cache fait ceci:

Fichier article.php:

$limite_cache = 24 * 3600;
$cache_name = "article".$id_article;
$squelette = "article.html";
include "inc.php";

et dans inc.php:

include "class.cache.php";

$cache = new cache();
if($cache->existe($cache_name) && !$cache->expire($cache_name,$limite_cache)) {
  include $cache->chemin_cache.$cache_name;
  exit;
}

il manque plus que le source de la classe Cache. Mais bon ca doit
ressemble a qq chose comme ca (pas tres compliqué je presume)

class cache {
   // constructeur ; il ne fait rien puisqu'il n'y a pas de parametres.
   function cache(){
   }

   function existe($name){
     $name = $this->translate($name);
     return(file_exist($name))
   }

   function expire($file, $limit){
      // retrouve la date du fichier caché et la compare
      // au delais demandé.
   }

   // les noms de fichiers sont gerés en interne de facon un peu savante ;
   // basé sur l'url, le md5 ...
   function translate($name){
     /// voir le code spip/inc_cache.php
     return $name
   }
}

CEPENDANT, il ne faut pas oublier que SPIP a aussi des taches de fond
a gerer (envoi de mail nouveautés) ; et apres un exit(), je ne vois
pas bien comment il va pouvoir faire.

sinon, ce qu'il a fait est plutot bien réalisé, il faut le reconnaitre.
il ne reste plus qu'a determiner ce que fait exactement SPIP apres
avoir détecté un fichier caché.

Un peu trop facile : s'il y a d'autres arguments ? si le premier qui
met en cache est admin et insère donc les boutons d'admin ? s'il y a un
formulaire forum à changer selon que l'internaute est logué ou pas ?
  C'est vrai que le cache spip est un beau bordel coté "faut il prendre
la version en cache ou pas", mais tout ce qui y est fait à une raison de
l'être.
  J'ai tenté de simplifier ça une fois, pour remplacer par des
RewriteRule (=> même plus de php du tout pour faire l'include dans ce
cas), mais c'est vraiment tordu à faire, et ça restreint à un minimum
de cas.

À+, Pif.