diff --git a/ecrire/inc/invalideur.php b/ecrire/inc/invalideur.php index 90b60c846973c323170389746792f99d80c29383..b3a81350136b149f4935d96640c25bf2daebefa2 100644 --- a/ecrire/inc/invalideur.php +++ b/ecrire/inc/invalideur.php @@ -61,9 +61,31 @@ function taille_du_cache() { // ici on se contente de noter la date de mise a jour dans les metas // http://doc.spip.org/@suivre_invalideur function suivre_invalideur($cond, $modif=true) { - if ($modif) { - ecrire_meta('derniere_modif', time()); + if (!$modif) + return; + + // determiner l'objet modifie : forum, article, etc + if (preg_match(',id_([a-z]+),', $cond, $r)) + $objet = $r[1]; + // cas particulier des signatures + else if (strpos($cond, 'varia/pet')) + $objet = 'signature'; + + // stocker la date_modif_$objet (ne sert a rien pour le moment) + if (isset($objet)) + ecrire_meta('derniere_modif_'.$objet, time()); + + // si $derniere_modif_invalide est un array('forum', 'signature') + // n'affecter la meta que si un de ces objets est modifie + if (is_array($GLOBALS['derniere_modif_invalide'])) { + if (in_array($objet, $GLOBALS['derniere_modif_invalide'])) + ecrire_meta('derniere_modif', time()); } + // sinon, cas standard, toujours affecter la meta + else + ecrire_meta('derniere_modif', time()); + + } diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php index ccf67bddcd8b4f42613f83d607168c42d5095fe4..a3cfce27222c0e8f60461dbecf7309c808390baa 100644 --- a/ecrire/public/cacher.php +++ b/ecrire/public/cacher.php @@ -107,7 +107,9 @@ function cache_valide(&$page, $date) { if (!isset($page['entetes']['X-Spip-Statique']) OR $page['entetes']['X-Spip-Statique'] !== 'oui') { // Cache invalide par la meta 'derniere_modif' - if ($GLOBALS['derniere_modif_invalide'] + // sauf pour les bots, qui utilisent toujours le cache + if (!_IS_BOT + AND $GLOBALS['derniere_modif_invalide'] AND $date < $GLOBALS['meta']['derniere_modif']) return 1;