Carnet Wiki

Version 9 — Novembre 2018 JLuc

Cette page détaille ce qui fait qu’un squelette est sessionné ou pas. 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 dans le cas d’une inclusion dynamique, ou par la fonction html_md5 d’un autre squelette dans le cas d’une inclusion statique
-  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 evaluer_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_dynamiques et plein d’autres contextes en tant qu’API de haut niveau
-  (FIX #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 : restaure l’état antérieur du flag global cache_utilise_session)

Squelette-étude

Squelette principal :

<INCLURE{fond=inclure/shouldbesafe}>
<INCLURE{fond=inclure/contaminant}>
<INCLURE{fond=inclure/shouldbesafetoo}>
<INCLURE{fond=inclure/shouldbesafetooencore}>

- shouldbesafe, shouldbesafetoo et shouldbesafetooencore ne contiennent rien de sessionnant.
-  contaminant contient un #SESSION{nom} qui nécessite sessionnement
-  shouldbesafetoo et shouldbesafetooencore contiennnent chacun un inclure statique ET un inclure dynamique (4 inclure en tout).

- le squelette principal est lui même inclu dynamiquement par un squelette d’appel (pour éviter l’interférence des particularités de l’appel de la page principale).

Des logs de la succession des appels à paramétrer et à evaluer_fond ont été réalisés et jolifiés :

|

Logs Suite d’inclures dynamiques - SANS FIX

|

Logs Suite d’inclures dynamiques - AVEC FIX

|

Les mêmes tests ont été faits mais avec une suite d’inclure statiques dans le squelette principal. Et les logs n’ont pas été autant jolifiés :

|

Logs Suite d’inclures statiques - SANS FIX

|

Logs Suite d’inclures statiques - AVEC FIX

|