Optimisation du cache, pipelines recuperer_fond et affichage_final

Le pipeline affichage_final est un peu, pour une page complète, l’équivalent du pipeline recuperer_fond pour une inclusion. Mais il y a quelques différences par rapport au cache et à l’accès au contexte.

Inclusion et pipeline recuperer_fond

La fonction recuperer_fond() produit d’abord le calcul du fond avec son contexte. Si il y a un cache correspondant au fond avec le contexte demandé, il est directement utilisé.

Puis elle appelle le pipeline recuperer_fond sur le résultat.

En conséquence, les modifications d’un fond opérées par le pipeline recuperer_fond ne sont pas enregistrées dans le cache de SPIP, sauf éventuellement si l’appel du dessus est de la forme #INCLURE auquel cas le HTML issu de recuperer_fond() figure dans le cache de l’appelant.

Page principale et pipeline affichage_final

La page principale est produite au moyen d’un mécanisme spécial qui optimise le cache : le résultat est directement stocké en cache, avec un nom qui ne dépend que de l’URL et des variables de contexte présentes dans la query-string (voir le code).

Cela permet, par la suite, de pouvoir trouver le cache SANS interroger SQL, ce qui procure un beau gain en terme de performance et de charge serveur.

S’il n’y a pas de cache valide pour cette page principale, alors SPIP décode l’URL pour avoir le contexte complet de la page (Voir le code).

De ce fait, en l’état actuel du code (SPIP4), le pipeline affichage_final ne reçoit pas le contexte.

D’aprés une réponse de Cedric

Auteur cerdic, JLuc Publié le : Mis à jour : 02/01/22