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 de haut niveau
- appelle evaluer_fond
- appelle le pipeline recuperer_fond
et encoder_contexte_ajax
au besoin
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)