Changeset 112506 in spip-zone
- Timestamp:
- Nov 22, 2018, 12:22:29 PM (2 years ago)
- Location:
- _plugins_/cachelab/trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
_plugins_/cachelab/trunk/inc/cachelab_invalideur.php
r112499 r112506 88 88 } 89 89 90 // 91 // Surcharge de maj_invalideurs 90 92 // le core indique : "Calcul des pages : noter dans la base les liens d'invalidation" 91 93 // … … 96 98 // http://code.spip.net/@maj_invalideurs 97 99 // 98 // S'il y a une entete X-Spip-Methode-Duree-Cache, on récupère la méthode 99 // et on appelle la fonction cachelab_calcule_duree_cache_lamethode avec le paramètre $page 100 // On corrige alors la durée du cache avec la valeur retournée 100 // S'il y a une entete X-Spip-Methode-Duree-Cache on récupère la méthode 101 // et on appelle la fonction cachelab_calcule_duree_cache_lamethode 102 // avec en argument la valeur de l'argument dans l'envt ou de date_creation par défaut 103 // On corrige alors la durée du cache avec la valeur retournée. 101 104 // 105 // S'il y a une entete X-Spip-Filtre-Cache on récupère le filtre 106 // et on l'appelle avec le cache entier en argument 107 // Le filtre peut modifier n'importe quelle partie du cache, métadonnée ou résultat de compilation. 108 // 109 110 define ('LOG_INVALIDATION_CORE', true); 102 111 function maj_invalideurs($fichier, &$page) { 103 112 global $Memoization; … … 107 116 // Abondamment appelé. À part pour pas noyer les autres 108 117 spip_log ("maj_invalideurs($fichier, &page)", "invalideur_core_maj_invalideurs"); 118 spip_log ("maj_invalideurs($fichier, &page)\n".print_r($page,1), "invalideur_core_maj_invalideurs_details"); 109 119 } 110 120 -
_plugins_/cachelab/trunk/paquet.xml
r112499 r112506 2 2 prefix="cachelab" 3 3 categorie="outil" 4 version="0.5. 0"4 version="0.5.1" 5 5 etat="dev" 6 6 compatibilite="[3.0.0;3.2.*]" -
_plugins_/cachelab/trunk/public/cachelab_balises.php
r112499 r112506 43 43 44 44 $t = trim($p->param[0][1][0]->texte); 45 if (_request('debug')) echo "t=$t<br>";46 45 if (preg_match(',^[0-9],', $t)) { 46 ++$i; 47 47 $duree = valeur_numerique($pd = $p->param[0][1][0]->texte); 48 48 … … 61 61 . "'.'>'"; 62 62 } 63 ++$i; 64 } 65 elseif (_request('debug')) 66 echo "t=$t<br>"; 63 } 67 64 68 65 // recuperer les parametres suivants 66 // C'est analyse_resultat_skel qui transforme les headers du code en tableau $headers 67 // S'il y a plusieurs fois la mm entete, seule la dernière valeur est retenue 68 // 69 69 while (isset($p->param[0][++$i])) { 70 70 $pa = ($p->param[0][$i][0]->texte); … … 73 73 and $duree > 0 74 74 ) { 75 $code .= ".'<'.'" . '?php header("Cache-Control: max-age='75 $code = ".'<'.'" . '?php header("Cache-Control: max-age=' 76 76 . $duree 77 77 . '"); ?' . "'.'>'"; … … 86 86 } 87 87 88 $concat = (trim($code) ? '.' : ''); 89 88 90 if (strpos($pa, 'duree-')===0) { 89 91 $methode = substr($pa, 6); 90 $ajout = ".'<'.'" . '?php header("X-Spip-Methode-Duree-Cache: '.$methode.'"); ?' . "'.'>'"; 91 $code .= $ajout; 92 spip_log ("Méthode de calcul de la durée du cache : $methode", 'cachelab'); 92 $ajout = "'<'.'" . '?php header("X-Spip-Methode-Duree-Cache: '.$methode.'"); ?' . "'.'>'"; 93 $code .= $concat.$ajout; 94 spip_log ("#CACHE avec méthode de calcul de la durée du cache : $methode", 'cachelab'); 95 spip_log ("#CACHE avec méthode de calcul de la durée du cache : $methode donne code=$code", 'cachelab_details'); 93 96 } 94 97 95 98 if (strpos($pa, 'filtre-')===0) { 96 99 $methode = substr($pa, 7); 97 $ajout = ".'<'.'" . '?php header("X-Spip-Filtre-Cache: '.$methode.'"); ?' . "'.'>'"; 98 $code .= $ajout; 99 spip_log ("Filtre sur le cache APC : $methode", 'cachelab'); 100 $ajout = "'<'.'" . '?php header("X-Spip-Filtre-Cache: '.$methode.'"); ?' . "'.'>'"; 101 $code .= $concat.$ajout; 102 spip_log ("#CACHE avec filtre sur le cache APC : $methode", 'cachelab'); 103 spip_log ("#CACHE avec filtre sur le cache APC : $methode donne code=$code", 'cachelab_details'); 100 104 } 101 105 } … … 165 169 // 166 170 function cachelab_filtre_log($cache, $arg) { 167 if (!is_array($cache) or !isset($cache['source']) ) {171 if (!is_array($cache) or !isset($cache['source']) or !isset($cache['lastmodified']) or !isset($cache['invalideurs'])) { 168 172 spip_log ("cachelab_duree_progapprox ne reçoit pas un cache mais".print_r($cache,1), "cachelab_assert"); 169 173 return null; … … 186 190 spip_log ("cache[$arg] : ".print_r($c,1), "cachelab_".$source_file); 187 191 } 192 193 // 194 // Assertions sur le fait que le cache est sessionné ou non 195 // et que l'internaute est identifié ou non 196 // 197 // Arguments possibles : oui, non, login, anonyme, log 198 // usages : 199 // #CACHE{3600, filtre-assertsession non} s'assure que les emplois sont non-sessionnés 200 // #CACHE{filtre-assertsession oui} s'assure que tous les emplois sont sessionnés 201 // #CACHE{filtre-assertsession login} s'assure que tous les emplois sont sessionnés avec un internaute identifié 202 // #CACHE{filtre-assertsession anonyme} s'assure que tous les emplois se font avec un internaute identifié 203 // Dans le cas où un assert n'est pas vérifié, un log est créé dans le fichier cachelab_assertsession 204 // 205 // Une dernière valeur de l'argument n'induit pas une assertion mais un log : 206 // #CACHE{filtre-assertsession log} crée un log avec l'état de la session pour chaque instance du cache 207 // 208 // Utile pour optimiser avec plugin macrosession et vérifier que ça se passe bien, et durablement, comme prévu 209 // 210 function cachelab_filtre_assertsession ($cache, $arg) { 211 if (!is_array($cache) or !isset($cache['source']) or !isset($cache['lastmodified']) or !isset($cache['invalideurs'])) { 212 spip_log ("cachelab_filtre_assertsession ne reçoit pas un cache mais".print_r($cache,1), "cachelab_assert"); 213 return null; 214 } 215 $source = $cache['source']; 216 $source_file = str_replace(array('/','.'), '_', $source); 217 $arg=trim($arg); 218 219 $invalideurs = $cache['invalideurs']; 220 221 // on teste l'invalideur session 222 // On pourrait aussi tester par le nom du cache avec '/_([0-9a-f]{8}|)$/i' ? 223 224 switch ($arg) { 225 case 'login' : 226 $ok = !empty($invalideurs['session']); // def et non vide 227 break; 228 case 'anonyme' : 229 $ok = empty($invalideurs['session']); // undef ou vide 230 break; 231 case 'oui' : 232 $ok = isset($invalideurs['session']); // défini, mais peut être vide 233 break; 234 case 'non' : 235 $ok = !isset($invalideurs['session']); // non défini 236 break; 237 case 'log' : 238 if (!isset($invalideurs['session'])) 239 $log = 'non'; 240 elseif ($invalideurs['session']) 241 $log = 'oui_login'; 242 else 243 $log = 'oui_anonyme'; 244 $ok = true; 245 spip_log ("session ? $log", "cachelab_".$source_file); 246 break; 247 default: 248 $ok = false; 249 $arg .= " : valeur incorrecte"; 250 break; 251 } 252 if (!$ok) 253 spip_log ("$source : assertsession n'est pas $arg. invalideurs=".print_r($invalideurs,1), "cachelab_assertsession"); 254 else 255 spip_log ("$source : assertsession est $arg. invalideurs=".print_r($invalideurs,1), "cachelab_assertsession_ok"); 256 }
Note: See TracChangeset
for help on using the changeset viewer.