diff --git a/inc-balises.php3 b/inc-balises.php3 index be764281608a49171fa2ca02a3bc7570fe6019c1..fa48ee1058f9316c76be7eacaea3159eb0297999 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 d54b6891ccd95451c35510ee303933203f67ac97..199bbfa3e59f5fc0d69a8a8b01b174a040ad5252 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 ca4902e95c598afeede846d19ba74dd20293207b..b208d60ad4beca7c61309ad28daaef9bb39074c8 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'] + ); } ?>