diff --git a/inc-cache.php3 b/inc-cache.php3 index afb442975502f51764a31dd362c32883ff0f0b61..e0079dea80cc4af06a17e9ebcf9074db822bf31c 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -207,21 +207,21 @@ function determiner_cache(&$use_cache, $contexte,$fond) { // Passage par reference juste par souci d'economie -function creer_cache(&$page, $chemin_cache, $duree) -{ +function creer_cache(&$page, $chemin_cache, $duree) { // Entrer dans la base les invalideurs calcules par le compilateur // (et supprimer les anciens) include_ecrire('inc_invalideur'); maj_invalideurs($chemin_cache, $page['invalideurs'], $duree); - // Enregistrer le fichier cache - - $r = ecrire_fichier($chemin_cache, - "<!-- " - . str_replace("\n", " ", serialize($page['signal'])) - . " -->\n" - . $page['texte']); + // Enregistrer le fichier cache qui contient + // 1) la carte d'identite de la page (ses "globals", genre id_article=7) + // 2) son contenu + $r = ecrire_fichier($chemin_cache, + "<!-- " + . str_replace("\n", " ", serialize($page['signal'])) + . " -->\n" + . $page['texte']); // Nouveau cache : creer un invalideur 't' fixant la date // d'expiration et la taille du fichier diff --git a/inc-public-global.php3 b/inc-public-global.php3 index df1147b97c3a1cc8a75314270cdc8b726bd63dca..f82aa75bf86c7b99e3aef392ec47f6c2d47e2dfb 100644 --- a/inc-public-global.php3 +++ b/inc-public-global.php3 @@ -70,29 +70,34 @@ function calcule_header_et_page ($fond) { function obtenir_page_ancienne ($chemin_cache, $fond, $inclusion=false) { - // - // Lire le fichier cache - // - lire_fichier ($chemin_cache, $page['texte']); - $lastmodified = max($lastmodified, @filemtime($chemin_cache)); - # spip_log ("cache $chemin_cache $lastmodified"); - - // - // Lire sa carte d'identite & fixer le contexte global - // - if (preg_match("/^<!-- ([^\n]*) -->\n(.*)/ms", $page['texte'], $match) - AND is_array($meta_donnees = unserialize($match[1]))) { - foreach ($meta_donnees as $var=>$val) + // + // Lire le fichier cache + // + lire_fichier ($chemin_cache, $page['texte']); + $lastmodified = max($lastmodified, @filemtime($chemin_cache)); + # spip_log ("cache $chemin_cache $lastmodified"); + + // + // Lire sa carte d'identite & fixer le contexte global + // + if (preg_match("/^<!-- ([^\n]*) -->\n/ms", $page['texte'], $match)) { + $meta_donnees = unserialize($match[1]); + if (is_array($meta_donnees)) { + foreach ($meta_donnees as $var=>$val) { $page[$var] = $val; + } + } - $page['texte'] = $match[2]; + $page['texte'] = substr($page['texte'], strlen($match[0])); - // Remplir les globals pour les boutons d'admin - if (!$inclusion AND is_array($page['contexte'])) - foreach ($page['contexte'] as $var=>$val) { - $GLOBALS[$var] = $val; - } + // Remplir les globals pour les boutons d'admin + if (!$inclusion AND is_array($page['contexte'])) { + foreach ($page['contexte'] as $var=>$val) { + $GLOBALS[$var] = $val; + } } + } + return $page; } @@ -151,14 +156,15 @@ function afficher_page_globale ($fond) { } else { // Obtenir la page - if (!$use_cache) - $page = obtenir_page_ancienne ($chemin_cache, $fond, false); - else { - include_local('inc-calcul'); - $page = calculer_page_globale ($chemin_cache, $fond); + if (!$use_cache) + $page = obtenir_page_ancienne ($chemin_cache, $fond, false); + else { + include_local('inc-calcul'); + $page = calculer_page_globale ($chemin_cache, $fond); - if ($chemin_cache) creer_cache($page, $chemin_cache, $use_cache); - } + if ($chemin_cache) + creer_cache($page, $chemin_cache, $use_cache); + } } if ($chemin_cache) $page['cache'] = $chemin_cache;