Changeset 112168 in spip-zone
- Timestamp:
- Oct 26, 2018, 8:37:16 AM (2 years ago)
- Location:
- _plugins_/cachelab/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/cachelab/trunk/inc/cachelab_invalideur.php
r112136 r112168 92 92 // 93 93 function maj_invalideurs($fichier, &$page) { 94 global $Memoization; 95 // Rq : ici, le texte du cache est non zipé (cf function creer_cache dans memoization), 96 // tandis que la version en cache peut être zipée (avec index 'gz'). 94 97 if (LOG_INVALIDATION_CORE) { 95 98 // Abondamment appelé. À part pour pas noyer les autres 96 99 spip_log ("maj_invalideurs($fichier, &page)", "invalideur_core_maj_invalideurs"); 97 100 } 101 102 function get_f_arg($f, $arg='') { 103 if (strpos($f, ' ')) { 104 $fparts = array_filter(explode(' ',$f)); 105 $f = array_shift($fparts); 106 $arg = implode(' ', $fparts); 107 } 108 return array ($f, $arg); 109 } 110 111 // Pour le calcul dynamique d'une durée de cache, la fonction user 112 // reçoit la *valeur* de l'une des valeurs de l'environnement (par défaut "date_creation") 113 // Exemple #CACHE{1200,duree-progressive date_naissance} 98 114 if (isset($page['entetes']['X-Spip-Methode-Duree-Cache'])) { 99 global $Memoization; 100 // FIXME : ici, le texte est non zipé (cf function creer_cache dans memoization), 101 // alors que la version mise en cache a peut être été zipée (index gz). 102 // Il faut soit reziper le texte au besoin, soit récupérer la version cachée : 103 // $page = $Memoization->get($fichier); 104 // Ou changer creer_cache pour qu'il appelle maj_invalideurs *avant* d'avoir écrit le cache 115 $f = 'cachelab_calcule_duree_'.$page['entetes']['X-Spip-Methode-Duree-Cache']; 116 list ($f, $arg) = get_f_arg($f, 'date_creation'); 117 if (function_exists($f)) { 118 if (!isset($page['contexte'][$arg])) { 119 spip_log ("#CACHE avec squelette {$page['source']} et calcul durée avec $f mais pas de '$args' dans le contexte ".print_r($page['contexte'],1), "cachelab_erreur"); 120 return; 121 } 122 $duree = $f($page['contexte'][$arg]); 123 spip_log ("#CACHE $f ($arg={$page['contexte'][$arg]}) renvoie : $duree s", "cachelab"); 105 124 106 $f = 'cachelab_calcule_duree_cache_'.$page['entetes']['X-Spip-Methode-Duree-Cache'];107 if (function_exists($f)) {108 $duree = $f($page);109 spip_log ("#CACHE $f (date_creation={$page['contexte']['date_creation']}) renvoie : $duree s", "cachelab");110 125 $page['duree'] = $duree; 126 $page['entetes']['X-Spip-Cache']=$duree; 127 111 128 // On garde un souvenir 112 129 // unset ($page['entetes']['X-Spip-Methode-Duree-Cache']); 113 $page['entetes']['X-Spip-Cache']=$duree;114 130 115 // Comme memoization, on ajoute une heure histoire de pouvoir tourner 116 // sur le cache quand la base de donnees est plantée (à tester) 131 // Comme memoization, on ajoute une heure "histoire de pouvoir tourner 132 // sur le cache quand la base de donnees est plantée (à tester)" 133 // TODO CORE ? changer creer_cache pour qu'il appelle maj_invalideurs *avant* d'avoir écrit le cache 117 134 $Memoization->set($fichier, $page, 3600+$duree); 118 135 } 119 136 else 120 spip_log ("#CACHE duree cache : a fonction '$f' n'existe pas\n".print_r($page,1), "cachelab_erreur"); 137 spip_log ("#CACHE duree cache : la fonction '$f' n'existe pas (arg='$arg')\n".print_r($page,1), "cachelab_erreur"); 138 } 139 140 // Exemple : #CACHE{1200,filtre-bidouille grave} peut grave bidouiller le cache yc ses métadonnées 141 if (isset($page['entetes']['X-Spip-Filtre-Cache'])) { 142 $f = 'cachelab_filtre_cache_'.$page['entetes']['X-Spip-Filtre-Cache']; 143 list ($f, $arg) = get_f_arg($f); 144 if (function_exists($f)) { 145 spip_log ("#CACHE appelle le filtre $f ($arg)", "cachelab"); 146 $f($page, $arg); 147 // ici rien de plus, c'est le filtre qui fait ce qu'il veut 148 // et qui peut enregistrer le résulat 149 } 150 else 151 spip_log ("#CACHE filtre : la fonction '$f' n'existe pas (arg='$arg')\n".print_r($page,1), "cachelab_erreur"); 121 152 } 122 153 } -
_plugins_/cachelab/trunk/paquet.xml
r112136 r112168 2 2 prefix="cachelab" 3 3 categorie="outil" 4 version="0. 2.2"4 version="0.3.0" 5 5 etat="dev" 6 6 compatibilite="[3.0.0;3.2.*]" -
_plugins_/cachelab/trunk/public/cachelab_balises.php
r112102 r112168 77 77 $code .= ".'<'.'" . '?php header("X-Spip-Statique: oui"); ?' . "'.'>'"; 78 78 } 79 80 if (strpos($pa, ' calcul-')===0) {81 $methode = substr($pa, 7);79 80 if (strpos($pa, 'duree-')===0) { 81 $methode = substr($pa, 6); 82 82 $ajout = ".'<'.'" . '?php header("X-Spip-Methode-Duree-Cache: '.$methode.'"); ?' . "'.'>'"; 83 83 $code .= $ajout; 84 84 spip_log ("Méthode de calcul de la durée du cache : $methode", 'cachelab'); 85 } 86 87 if (strpos($pa, 'filtre-')===0) { 88 $methode = substr($pa, 7); 89 $ajout = ".'<'.'" . '?php header("X-Spip-Filtre-Cache: '.$methode.'"); ?' . "'.'>'"; 90 $code .= $ajout; 91 spip_log ("Filtre sur le cache APC : $methode", 'cachelab'); 85 92 } 86 93 }
Note: See TracChangeset
for help on using the changeset viewer.