Carnet Wiki

Calcul du sessionnement des caches

Version 13 — March 2019 JLuc

Cette page détaille ce qui fait qu’un squelette est sessionné ou pas : comme se calcule le fait qu’un cache est sessionné ou non

Pour le fonctionnement général du compilateur : voir A propos du compilateur

L’état sessionné ou non du contexte courant est géré
-  au niveau du compilateur par une globale $GLOBALS['cache_utilise_session']
-  au niveau de chaque cache par la métadonnée ['invalideurs']['session']

evaluer_fond

-  est appelé par recuperer_fond
-  appelle parametrer (qui lève éventuellement invalideurs[session] du cache)
-  appelle recuperer_fond (qui appelle à son tour evaluer_fond), pour chacune de ses inclusions dynamiques
-  lève ou baisse le drapeau global cache_utilise_session qui contamine ou décontamine le compilateur, selon que la page est sessionnée ou non

parametrer

-  est implémenté par public_parametrer_dist dans le core
-  est appelé par evaluer_fond et aussi, directement, par le calcul du squelette principal de la page appelée par la requête http
-  appelle styliser et composer
-  appelle recuperer_fond pour chacune de ses inclusions statiques
-  appelle la fonction html_md5 du squelette, qui lève éventuellement invalideurs[session] dans le cache, si le cache est sessionné

recuperer_fond

-  est appelé par les inclusions statiques et dynamiques et plein d’autres contextes en tant qu’API qu’API de haut niveau niveau
-   appelle < code>evaluer_fond</code >
- appelle le pipeline < code>recuperer_fond</code > et < code>encoder_contexte_ajax</code > au besoin ([ FIX # 4235 -> https://core . spip.net/issues/4235] : sauvegarde l’état et abaisse le flag global cache_utilise_session)
-  appelle evaluer_fond
-  appelle le pipeline recuperer_fond et encoder_contexte_ajax au besoin
-  ([FIX #4235 ->https://core.
spip.net/issues/4235] : si c’est une inclusion statique sesionnée, on contamine le cache englobant.)

Notes


-  Cette étude à été faite pour les besoins du plugin cachelab qui permet de choisir les caches qu’on veut rafraîchir, avec l’aide du plugin XRay
-  Elle a permis de détecter et corriger un bug dans le calcul des sessionnements qui provoquait une explosion du cache (Corrigé dans SPIP3.3 : #4235)