Development #13385
Failed to retrieve theme : le cache du thème est basé sur l'URL complète
0%
Description
Il me semble que le header 'X-Combo-Page-Id' a justement été prévu pour cela.
Fichiers
Historique
Mis à jour par Frédéric Péters il y a plus de 7 ans
Non, le X-Combo-Page-Id il sert à ne pas garder en cache n fois le même template.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Pour bien noter les choses pour tout le monde, il s'agit de l'URL (scheme/host/path), sans la query string.
Ici de manière évidente, mais à d'autres endroits précédemment mentionnés, le plus simple ça peut être des modifications à authentic pour mieux jouer avec la mécanique (je pense à #12932).
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-add-a-layer-of-cache-using-x-combo-page-id-for-remot.patch 0001-add-a-layer-of-cache-using-x-combo-page-id-for-remot.patch ajouté
Il me semble quand même que X-Combo-Page-Id pourrait être utilisé pour faire un cache à deux niveaux.
Mis à jour par Frédéric Péters il y a plus de 7 ans
Peut-être que j'invente une signification à ce ticket, pour moi je le lisais comme la suite de mon commentaire, comme quoi il y avait eu une trace "failed to retrieve theme" parce que le path de la page demandée contenait un hash et n'avait du coup aucune chance d'être trouvé dans le cache.
(et le patch proposé ne change rien à cela)
Mais peut-être je me trompe sur l'objet du ticket.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
Effectivement, j'ai été un peu vite en besogne, ma première idée était de rechercher en cas d'absence de cache le cache d'une page préfixe puis je suis partie sur X-Combo-Page-Id en me disant que ça résolvait tout mais ce que j'ai perdu au passage c'est que j'aurai aimé avoir aussi le redirect_url de combo pas seulement l'id de la page pour justement pouvoir rechercher un préfixe. Je vais revoir ma copie.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch ajouté
Un nouveau patch avec une idée tout autre, en cas d'update_content() qui foire (j'ai d'ailleurs augmenter les erreurs couvertes avec un try/catch RequestException) on simplifie self.source
en remontant d'un niveau dans la hiérarchie des URLs, on s'arrête si le chemin est '/' ou vide.
Ce n'est pas le cas ici je pense mais il est aussi possible que ces erreurs ne soient pas visibles, puisqu'on aura aussi un logger.error() dans un update_content() lancé dans un thread alors qu'un template aura bien été trouvé. J'ai donc aussi déplacé le logger.error() au niveau du Exception('Failed to retrieve theme').
Mis à jour par Frédéric Péters il y a plus de 7 ans
Après un appel à .recurse() on se trouve avec template_body étant un objet Template.
En django 1.8 faire return self.get_template().origin.source
rattrape ça mais je ne sais pas pour les autres versions, et ça serait peut-être plus simple de juste diviser get_template(), en get_template() qui ferait Template(...) et un get_template_string().
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch ajouté
Oui bien sûr c'est même beaucoup plus clair comme ça, au passage j'ai tout renommé autour de cette notion de template body, je trouve que c'est plus lisible.
Mis à jour par Benjamin Dauvergne il y a plus de 7 ans
- Fichier 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch 0001-try-parent-path-if-theme-retrieval-fails-for-current.patch ajouté
Avec un test, ce qui m'a permis de lever quelques erreurs et aussi de permettre une mise en cache des résultats obtenus par récursion, je ne sais pas si c'est vraiment utile mais au niveau des tests c'est plus parlant.
Mis à jour par Frédéric Péters il y a environ 7 ans
self.cache(template_body)
Mais la méthode a changé de nom, ça devrait être self.cache_template_body.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de En cours à Information nécessaire
Je ne sais pas si ça sert encore à quelque chose...
Mis à jour par Benjamin Dauvergne il y a presque 5 ans
- Statut changé de Information nécessaire à Rejeté