Project

General

Profile

Actions

Feature #10638

closed

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

Added by Yohann Chastagnier almost 3 years ago. Updated 3 months ago.

Status:
Closed
Priority:
Normal
Category:
-
Start date:
04/19/2019
Due date:
% Done:

100%

Estimated time:
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.

Actions #1

Updated by Yohann Chastagnier over 2 years ago

  • Status changed from In progress... to Resolved
  • % Done changed from 0 to 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

Actions #2

Updated by Miguel Moquillon over 2 years ago

  • Status changed from Resolved to Integration in progress...
Actions #3

Updated by Miguel Moquillon over 2 years ago

  • Target version set to Version 6.1
Actions #4

Updated by Miguel Moquillon over 2 years ago

  • Status changed from Integration in progress... to Closed
Actions #5

Updated by Yohann Chastagnier 4 months ago

  • Status changed from Closed to Resolved
  • Target version changed from Version 6.1 to 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

Actions #6

Updated by Miguel Moquillon 3 months ago

  • Status changed from Resolved to Integration in progress...
Actions #7

Updated by Miguel Moquillon 3 months ago

  • Status changed from Integration in progress... to Closed

Intégré dans 6.2.x et dans master

Actions

Also available in: Atom PDF