[spip-dev] Organisation du cache

Bonjour à tous,

Plusieurs personnes m'ayant demandé en privé une description du répertoire CACHE
pour les aider dans leurs tripatouillages + ou - avouables (je ne citerai pas de noms :-))
voici une description précise.

Le sous-répertoire s contient la compilation en php du source html des squelettes.
Les fichiers sont nommés par l'expression "html_" . md5(path-du-squelette) . ".php"
mais leur première ligne contient en commentaire php le path en clair.
Donc sous shell, grep "^<.php.*un-bout-du-path" CACHE/s/* indique vite ce qu'on cherche.

Le cache d'une page a comme première ligne un commentaire html indiquant successivement:
- la durée de vie de la page
- si elle ne contient pas d'interpolations <? (flag "html") ou si ("php")
- le nom du squelette compilé qui l'a produite
- l'URL qui a provoqué sa création, débarassée des valeurs pour faire court.
Ce cache est un fichier de suffixe ".html" le reste du nom étant le md5
de l'URL (après réécriture du serveur et retrait des variables internes à Spip).
Il est situé dans un répertoire dont le nom est le délai de la page, ce répertoire
étant lui-même un sous-répertoire nommé par un chiffre hexadécimal, savoir
la seizième lettre du md5 en question.
Donc, sous shell,
grep "^<.--.*un-bout-d'URL" CACHE/?/*/*
indique vite ce qu'on cherche.

Bon tripatouillage à tous.

esj

Bonjour,

Je fais partie de ceux qui ont demandé cette info à Emmanuel car je n'arrivais pas à qualifier un bug sur la CVS.

En fait je n'arrivais pas à retrouver mes petits (squelette compilée et page en cache) pour les pages où j'utilise l'URL rewriting.

Ainsi par exemple pour les articles j'utilise :

function generer_url_article($id_article) {
    if (! $id_article) $id_article = 0; $result = spip_query("SELECT id_secteur,titre FROM spip_articles WHERE id_article=$id_article");
    $row = spip_fetch_array($result);
    $id_secteur = $row['id_secteur'];
    $titre = trim($row['titre']);
    // on ne traite que les fiches de lectures
    if ($id_secteur==1) {
        $url = "".translitteration(nettoyerURL($titre)). "--$id_article.html";
    }
    else {
        $url = "article$id_article.html";
    }
    if ($GLOBALS['recherche']) $url .= "?var_recherche=".urlencode($GLOBALS['recherche']);
    return $url;
}

et l'URL rewriting suivant :

RewriteRule ^([^--]*)--([0-9]+).html$ /article.php3?id_article=$2 [QSA,L]

Ce qui marche plutôt comme je veux avec la 1.7.2.

Avec la 1.8 j'avais des inclusions bizarres donc j'ai cherché à voir ce qui était en cache et là... impossible de trouver le squelette compilé ou même la page en cache.
Quand j'appelle mes articles par articles.php?id_article=XXXX tout va bien (et mon bug sur l'inclusion est corrigé) mais avec l'URL Rewriting plus rien ne fonctionne !

Est ce que cela correspond au nouveau fonctionnement du compilateur ?

Bon dimanche,

Dadoo

Désolé ça faisait deux jours que je ruminais ce problème et j'ai trouvé mon erreur 2 minutes après avoir envoyé mon mail :frowning:

Aucun bug à signaler c'est mon URL Rewriting qui renvoyait sur un autre SPIP en 1.7.2 installé à côté dans un autre répertoire...

Dadoo

David Féroc wrote: