Projet

Général

Profil

Development #8875

éviter l'utilisation d'ancienne CSS

Ajouté par Frédéric Péters il y a plus de 8 ans. Mis à jour il y a environ 5 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Catégorie:
-
Version cible:
-
Début:
05 novembre 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Club:
Non

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

#1

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

#2

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.

#3

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).

#4

Mis à jour par Frédéric Péters il y a plus de 8 ans

#5

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.

#7

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.

#8

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.
#9

Mis à jour par Frédéric Péters il y a environ 5 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF