From d03f540d6493b8e7717f914efb5ea0612e3a0923 Mon Sep 17 00:00:00 2001
From: Fil <fil@rezo.net>
Date: Tue, 12 Sep 2006 15:18:16 +0000
Subject: [PATCH] invalidation des caches lors de modifs substantielle de la
 base : approche brutalement efficace

---
 ecrire/inc_version.php   | 3 +++
 ecrire/public/cacher.php | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index 6a7b74fbf8..5b060376e2 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -124,6 +124,9 @@ $ignore_remote_user = true; # methode obsolete et risquee
 #$invalider_caches = 'id_article,id_breve,id_rubrique,id_syndic';
 $invalider_caches = '';
 
+// Autre approche, egalement experimentale : tout invalider si modif
+$derniere_modif_invalide = false;
+
 // Quota : la variable $quota_cache, si elle est > 0, indique la taille
 // totale maximale desiree des fichiers contenus dans le CACHE/ ;
 // ce quota n'est pas "dur", il ne s'applique qu'une fois par heure et
diff --git a/ecrire/public/cacher.php b/ecrire/public/cacher.php
index 71ca9512a3..3a22e08460 100644
--- a/ecrire/public/cacher.php
+++ b/ecrire/public/cacher.php
@@ -164,6 +164,12 @@ function cache_valide_autodetermine($chemin_cache, $page, $date) {
 
 	if (!$page) return 1;
 
+	// Cache invalide par la meta 'derniere_modif'
+	if ($GLOBALS['derniere_modif_invalide']
+	AND $date < $GLOBALS['meta']['derniere_modif'])
+		return 1;
+
+	// Duree du cache precisee par #CACHE{x}
 	if (isset($page['entetes']['X-Spip-Cache'])) {
 		$duree = intval($page['entetes']['X-Spip-Cache']);
 		if ($duree == 0)  #CACHE{0}
-- 
GitLab