From 5c7eafb214c0b73a11610c41d1d2654fe8ac907d Mon Sep 17 00:00:00 2001 From: Fil <fil@rezo.net> Date: Sun, 5 Feb 2006 22:22:17 +0000 Subject: [PATCH] =?UTF-8?q?correction=20d'un=20bug=20sur=20#CACHE,=20qui?= =?UTF-8?q?=20n'=C3=A9tait=20pas=20utilis=C3=A9=20pour=20d=C3=A9terminer?= =?UTF-8?q?=20si=20le=20cache=20restait=20ou=20non=20valide=20;=20on=20int?= =?UTF-8?q?roduit=20un=20entete=20propri=C3=A9taire=20(=C3=A0=20nommer=20c?= =?UTF-8?q?omme=20on=20veut)=20pour=20stocker=20cette=20valeur=20ailleurs?= =?UTF-8?q?=20que=20dans=20cache-control,=20car=20on=20peut=20tr=C3=A8s=20?= =?UTF-8?q?bien=20vouloir=20mettre=20en=20cache=20pendant=20longtemps=20#C?= =?UTF-8?q?ACHE{10000}=20une=20page=20dynamique=20#HTTP=5FHEADER{Cache-Con?= =?UTF-8?q?trol:=20no-cache=20etc}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc-balises.php3 | 11 +++++++++-- inc-cache.php3 | 12 +++++------- inc-calcul.php3 | 10 ++++++---- 3 files changed, 20 insertions(+), 13 deletions(-) diff --git a/inc-balises.php3 b/inc-balises.php3 index be76428160..fa48ee1058 100644 --- a/inc-balises.php3 +++ b/inc-balises.php3 @@ -805,12 +805,19 @@ function balise_HTTP_HEADER_dist($p) { // #CACHE{24*3600} function balise_CACHE_dist($p) { $duree = valeur_numerique($p->param[0][1][0]->texte); + + // noter la duree du cache dans un entete proprietaire + $p->code .= '\'<'.'?php header("X-Spip-Cache: ' + . $duree + . '"); ?'.'>\''; + + // remplir le header Cache-Control if ($duree > 0) - $p->code = '\'<'.'?php header("Cache-Control: max-age=' + $p->code .= '.\'<'.'?php header("Cache-Control: max-age=' . $duree . '"); ?'.'>\''; else - $p->code = '\'<' + $p->code .= '.\'<' .'?php header("Cache-Control: no-store, no-cache, must-revalidate"); ?' .'><' .'?php header("Pragma: no-cache"); ?' diff --git a/inc-cache.php3 b/inc-cache.php3 index d54b6891cc..199bbfa3e5 100644 --- a/inc-cache.php3 +++ b/inc-cache.php3 @@ -136,15 +136,13 @@ function cache_valide($chemin_cache, $contenu, $date) { // gestion des delais par specification a l'interieur du squelette -function cache_valide_autodetermine($chemin_cache, $contenu, $date) { +function cache_valide_autodetermine($chemin_cache, $page, $date) { - if (!$contenu) return 1; + if (!$page) return 1; + + if (strlen($duree = $page['entetes']['X-Spip-Cache'])) + return ($date + $duree > time()) ? 0 : $t; - if (preg_match('/max-age\s*=\s*(\d+)/', - $page['entetes']['Cache-Control'], - $r)) - return ($r[1] > (time() - $date)) ? 0 : $r[1]; - // squelette ancienne maniere, on se rabat sur le vieux modele return cache_valide($chemin_cache, $contenu, $date); } diff --git a/inc-calcul.php3 b/inc-calcul.php3 index ca4902e95c..b208d60ad4 100644 --- a/inc-calcul.php3 +++ b/inc-calcul.php3 @@ -273,10 +273,12 @@ function analyse_resultat_skel($nom, $Cache, $corps) { } return array('texte' => $corps, - 'squelette' => $nom, - 'process_ins' => ((strpos($corps,'<'.'?')=== false)?'html':'php'), - 'invalideurs' => $Cache, - 'entetes' => $headers); + 'squelette' => $nom, + 'process_ins' => ((strpos($corps,'<'.'?')=== false)?'html':'php'), + 'invalideurs' => $Cache, + 'entetes' => $headers, + 'duree' => $headers['X-Spip-Cache'] + ); } ?> -- GitLab