Projet

Général

Profil

Actions

Feature #10638

fermé

Mise en place d'un Cache Busting pour les ressources CSS et JS.

Ajouté par Yohann Chastagnier il y a plus de 5 ans. Mis à jour il y a environ 3 ans.

Statut:
Closed
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
19/04/2019
Echéance:
% réalisé:

100%

Temps estimé:
Livraison en TEST:
Livraison en PROD:

Description

Il s'agit ici de se baser sur les explications fournies à partir de https://csswizardry.com/2019/03/cache-control-for-civilians/

Le but est d'obtenir de la part du navigateur le moins d'aller retour vers le serveur pour récupérer les fichiers CSS et JS (en ce qui nous concerne pour le moment) et d'augmenter du coup les performances d'affichage et de fluidité de Silverpeas.

Mis à jour par Yohann Chastagnier il y a plus de 5 ans

  • Statut changé de In progress... à Resolved
  • % réalisé changé de 0 à 100

Le numéro de version est maintenant automatiquement ajouté dans le nom des fichiers JS et CSS, accessibles depuis le contexte applicatif /silverpeas, sans action particulière de la part du développeur.

A noter que pour le plugin CKEDITOR a été ajouté le paramétrage de la constante ci-dessous :

window.CKEDITOR_BASEPATH = '/silverpeas/wysiwyg/jsp/ckeditor/';

PR : https://github.com/Silverpeas/Silverpeas-Core/pull/997

Mis à jour par Miguel Moquillon il y a plus de 5 ans

  • Statut changé de Resolved à Integration in progress...

Mis à jour par Miguel Moquillon il y a plus de 5 ans

  • Version cible mis à Version 6.1

Mis à jour par Miguel Moquillon il y a plus de 5 ans

  • Statut changé de Integration in progress... à Closed

Mis à jour par Yohann Chastagnier il y a environ 3 ans

  • Statut changé de Closed à Resolved
  • Version cible changé de Version 6.1 à Version 6.2.2

Malgré la mise en place du cache busting basé sur le numéro de version Silverpeas, il y a des cas en production où le numéro de version de Silverpeas n'est pas assez discriminant.

Par exemple, en cas de coup dur, une livraison en urgence d'une partie des librairies peut être effectuée (le look par exemple).
La version de Silverpeas restant inchangée, les éventuelles nouvelles ressources CSS ou Javascript ne sont par reprises par le navigateur WEB qui reste sur les éléments qu'il possède dans son cache.

Pour palier à cela, plusieurs méthodes de traitement de cache busting sont maintenant proposées :
  1. la première se base sur la version de Silverpeas (méthode actuelle et prochainement par défaut)
  2. la seconde se base sur la dernière date de modification d'un fichier
  3. la dernière se base sur la date de démarrage du serveur Silverpeas

Le but de chacune de ces méthodes est de calculer une empreinte (fingerprint) pour l'insérer ensuite dans l'URL d'accès d'une ressource CSS ou Javascript.

Le choix de cette méthode s'effectue au niveau du fichier $SILVERPEAS_HOME/properties/org/silverpeas/util/url.properties via le paramètre cache.busting.method :
  1. VERSION : méthode actuelle. Si la version de Silverpeas est 6.2.2 alors l'empreinte calculée est 622.
  2. LAST_FILE_MODIFICATION : dans ce cas, le système lit la dernière date de modification du fichier spécifié au niveau du paramètre cache.busting.lastFileModification.path. Le mois, le jour, l'heure et les minutes sont alors concaténés pour constituer l'empreinte. Par exemple, si la date de dernière modification d'un fichier est 24/06/2021 14:30:59.089, l'empreinte calculée est 06241430. La valeur par défaut de ce second paramètre est ${env.SILVERPEAS_HOME}/bin/silverpeas.gradle.
  3. SERVER_START : l'heure de démarrage du serveur Silverpeas est traitée de la même manière que celle de dernière modification d'un fichier

Pour des raisons de performance, l'empreinte est calculée une seule fois au démarrage du serveur Silverpeas.
Si la méthode en cours n'est pas celle souhaitée, il faut alors redémarrer Silverpeas une fois le paramétrage modifié comme souhaité.

PR : https://github.com/Silverpeas/Silverpeas-Core/pull/1171

Mis à jour par Miguel Moquillon il y a environ 3 ans

  • Statut changé de Resolved à Integration in progress...

Mis à jour par Miguel Moquillon il y a environ 3 ans

  • Statut changé de Integration in progress... à Closed

Intégré dans 6.2.x et dans master

Actions

Formats disponibles : Atom PDF