Uploaded by usermr

9352f872-1375-462d-aad8-7dfa498d32c3%2FRapport sur la gestion du versionnement des releases Angular et la mise en uvre dune solution de cache-busting

advertisement
Rapport sur la gestion du
versionnement des releases
Angular et la mise en œuvre
d’une solution de cachebusting
Problématique
Lors des mises à jour d’une application Angular, les utilisateurs peuvent
rencontrer des problèmes de cache qui les obligent à effectuer manuellement
un nettoyage de leur navigateur. Cela peut provoquer des erreurs d’affichage
ou des comportements inattendus dus à l’utilisation de fichiers anciens (CSS,
JavaScript).
Pour résoudre ce problème, il est possible d’implémenter une solution
de cache-busting en utilisant des noms de fichiers uniques basés sur des
hachages. Cette méthode garantit que les navigateurs rechargent
automatiquement les fichiers mis à jour après une nouvelle release.
Solution : Utilisation de noms de fichiers hashés
Principe
Angular CLI permet de générer des fichiers avec des noms hashés, c’est-à-dire
des noms de fichiers contenant un identifiant unique basé sur leur contenu. Par
exemple :
Avant (sans hash) : main.js , styles.css
Après (avec hash) : main.8d7f3c2b.js , styles.a1b2c3d4.css
Lorsque le contenu d’un fichier change, son hash change également, ce qui
force le navigateur à télécharger la nouvelle version.
Étapes de mise en place
Rapport sur la gestion du versionnement des releases Angular et la mise en œuvre d’une solution de cache-busting
1
1. Configurer Angular CLI pour activer le hashing
Ouvrir le fichier angular.json .
Localiser la section configurations sous build pour la configuration de
production.
Ajouter ou modifier l’option suivante :
"configurations": {
"production": {
"outputHashing": "all"
}
}
Cette configuration applique le hashing à tous les fichiers générés par Angular
(JS, CSS, assets).
2. Configurer le serveur pour servir la dernière version
Le fichier index.html doit toujours être servé sans cache, car il contient les
références aux fichiers hashés. Voici des exemples de configuration :
Avec Nginx :
location / {
add_header Cache-Control "no-store";
try_files $uri /index.html;
}
Avec Apache :
<FilesMatch "index.html">
Header set Cache-Control "no-store"
</FilesMatch>
Ces configurations s’assurent que le fichier index.html est toujours téléchargé
depuis le serveur lors d’une requête utilisateur.
3. Ajouter un Service Worker pour gérer les versions
Rapport sur la gestion du versionnement des releases Angular et la mise en œuvre d’une solution de cache-busting
2
Angular offre une prise en charge native des Service Workers via le
package @angular/pwa .
Installation :
ng add @angular/pwa
Fonctionnement du Service Worker :
1. Surveille les modifications des fichiers (grâce aux noms hashés).
2. Met en cache les fichiers statiques pour une utilisation hors ligne.
3. Détecte les nouvelles versions en comparant les manifestes de cache.
4. Permet d’afficher une notification ou de recharger automatiquement
l’application lorsqu’une nouvelle version est disponible.
Étapes supplémentaires pour personnaliser le comportement :
Modifier le fichier ngsw-config.json pour définir les stratégies de cache.
Exemple de configuration :
{
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"updateMode": "prefetch",
"resources": {
"files": ["/*.js", "/*.css", "/index.html"]
}
}
]
}
Construire le projet en production pour générer les fichiers nécessaires :
ng build --configuration=production
Rapport sur la gestion du versionnement des releases Angular et la mise en œuvre d’une solution de cache-busting
3
Coûts et avantages
Coûts
Temps d’implémentation : 1 à 2 heures pour configurer outputHashing ,
ajuster le serveur et tester.
Maintenance : Minimal, car la solution s’intègre directement dans le
pipeline Angular.
Avantages
Amélioration de l’expérience utilisateur : Les utilisateurs obtiennent
automatiquement les dernières versions de l’application sans intervention
manuelle.
Sécurité accrue : Les fichiers anciens ou obsolètes ne sont plus utilisés par
les navigateurs.
Facilité de mise en œuvre : Solution compatible avec Angular et la plupart
des serveurs Web.
Rapport sur la gestion du versionnement des releases Angular et la mise en œuvre d’une solution de cache-busting
4
Download