Skip to content
Extraits de code Groupes Projets
Valider 5c7eafb2 rédigé par Fil's avatar Fil
Parcourir les fichiers

correction d'un bug sur #CACHE, qui n'était pas utilisé pour déterminer si le...

correction d'un bug sur #CACHE, qui n'était pas utilisé pour déterminer si le cache restait ou non valide ; on introduit un entete propriétaire (à nommer comme on veut) pour stocker cette valeur ailleurs que dans cache-control, car on peut très bien vouloir mettre en cache pendant longtemps #CACHE{10000} une page dynamique #HTTP_HEADER{Cache-Control: no-cache etc}

parent 603df966
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -805,12 +805,19 @@ function balise_HTTP_HEADER_dist($p) { ...@@ -805,12 +805,19 @@ function balise_HTTP_HEADER_dist($p) {
// #CACHE{24*3600} // #CACHE{24*3600}
function balise_CACHE_dist($p) { function balise_CACHE_dist($p) {
$duree = valeur_numerique($p->param[0][1][0]->texte); $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) if ($duree > 0)
$p->code = '\'<'.'?php header("Cache-Control: max-age=' $p->code .= '.\'<'.'?php header("Cache-Control: max-age='
. $duree . $duree
. '"); ?'.'>\''; . '"); ?'.'>\'';
else else
$p->code = '\'<' $p->code .= '.\'<'
.'?php header("Cache-Control: no-store, no-cache, must-revalidate"); ?' .'?php header("Cache-Control: no-store, no-cache, must-revalidate"); ?'
.'><' .'><'
.'?php header("Pragma: no-cache"); ?' .'?php header("Pragma: no-cache"); ?'
......
...@@ -136,15 +136,13 @@ function cache_valide($chemin_cache, $contenu, $date) { ...@@ -136,15 +136,13 @@ function cache_valide($chemin_cache, $contenu, $date) {
// gestion des delais par specification a l'interieur du squelette // 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 // squelette ancienne maniere, on se rabat sur le vieux modele
return cache_valide($chemin_cache, $contenu, $date); return cache_valide($chemin_cache, $contenu, $date);
} }
......
...@@ -273,10 +273,12 @@ function analyse_resultat_skel($nom, $Cache, $corps) { ...@@ -273,10 +273,12 @@ function analyse_resultat_skel($nom, $Cache, $corps) {
} }
return array('texte' => $corps, return array('texte' => $corps,
'squelette' => $nom, 'squelette' => $nom,
'process_ins' => ((strpos($corps,'<'.'?')=== false)?'html':'php'), 'process_ins' => ((strpos($corps,'<'.'?')=== false)?'html':'php'),
'invalideurs' => $Cache, 'invalideurs' => $Cache,
'entetes' => $headers); 'entetes' => $headers,
'duree' => $headers['X-Spip-Cache']
);
} }
?> ?>
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter