Development #8875
éviter l'utilisation d'ancienne CSS
0%
Description
Encore dans #8872 on met à jour templates et CSS mais la CSS reste dans le cache du navigo et bardaf, c'est l'embardée.
Il y a des trucs "compliqués" comme django-compressor qui assurent cette partie mais je ne pense pas que ça marche sur notre configuration où les fichiers sont d'une part référencés avec des URL absolues et d'autre part déterminés à partir d'une variable (css_variant).
Là je pense à un truc qui serait un context processor dans hobo ajoutant une variable "publik_base_theme_hash" (sur base de la version de publik-base-theme installée, qui serait calculée une fois et gardée en cache tout le long de la vie du processus), et référencer les URL avec ".../fichier.css?{{publik_base_theme_hash}}".
Je rate quelque chose ?
Fichiers
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Sinon il y a ça1 qui est dans Django depuis la 1.7. Mais ça ne marche pas en tests et runserver si je lis bien la doc (exige collectstatic) :/
[1]: https://docs.djangoproject.com/en/1.7/ref/contrib/staticfiles/#manifeststaticfilesstorage
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Assigné à mis à Frédéric Péters
- Priorité changé de Normal à Haut
Et pour notre partie multitenant/thème on ne passe pas non plus par collectstatic.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Concernant la technique du hash dans la query-string, je serai pour y mettre plus que la version de publik-base-theme dedans: les versions de tous les paquets eo ou dont on dépend (ce qui est le plus simple à trouver, il me semble qu'on a déjà le code pour lister les paquets eo et leurs versions dans le VersionMiddleware) et aussi un élément extérieur genre un compteur (je dis un compteur mais pourvu que la valeur change ça suffit, on peut y mettre n'importe quoi) dans /var/lib/publik/theme-counter
pour pouvoir forcer un reload sur tous les clients quand c'est nécessaire (modif à chaud, modif sur un fichier ailleurs avec une URL absolue).
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Fichier 0001-misc-add-a-new-statics_hash-in-context-variables-887.patch 0001-misc-add-a-new-statics_hash-in-context-variables-887.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Ça m'a l'air ok; pour le /var/lib/publik/... j'aurai peut-être utilisé un setting. Les chemins dans le code c'est bof.
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Fichier 0001-misc-add-a-new-statics_hash-in-context-variables-887.patch 0001-misc-add-a-new-statics_hash-in-context-variables-887.patch ajouté
Je suis d'accord.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
Ack, mais faudra penser à relancer combo quand le thème publik est mis à jour, ou bien faire un touch /var/lib/publik/theme-counter dans le post-inst du thème.
Mis à jour par Frédéric Péters il y a plus de 8 ans
- Statut changé de En cours à Résolu (à déployer)
(j'y ai intégré la modif de #9023, je pensais avoir déjà poussé ce patch).
commit f3a53a4492bd5d49a73cdddab98b7d127a6f1f42 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Nov 18 12:22:03 2015 +0100 misc: add a new statics_hash in context variables (#8875) This variable is to be used to prevent browser using stale resources (javascript and stylesheets) after package upgrades. Use it like href="{% static 'foobar.css' %}?{{statics_hash}}". It is computed from installed module versions + the access time of settings.STATICS_HASH_COUNTER (so it's possible to "force" a reload by touching that file). Set settings.STATICS_HASH_COUNTER to /var/lib/publik/statics-counter in the debian packaging.