web-dev-qa-db-fra.com

React APP doit effacer le cache de navigateur après un nouveau déploiement

Nous déployons notre React sur le serveur Apache à l'aide du pipeline Jenkins. Lorsque nous déployons de nouveaux codes, la plupart des nouvelles fonctionnalités fonctionnent bien, mais pas pour que toutes les modifications reflètent le dernier du navigateur. Utilisateurs avoir à ouvrir une fenêtre incognito ou de cache effacer pour voir la nouvelle fonctionnalité.

J'ai vu quelques solutions liées à applications angulaires mais quelque chose de spécifique à React application, je ne vois nulle part. Pendant le temps de construction, pouvons-nous ajouter quelque chose qui sera Servir automatiquement les dernières modifications pour l'utilisateur final? Je suppose que la buse de cache est requise, mais comment pouvons-nous faire de nombreuses modifications dans le code, car la solution ci-dessus a fait pour Angular =.

4
Nimish goel

J'utilise personnellement ci-dessous dans mon environnement de développement pour tester

# Never cache these...
# HTTP 1.1=>Cache-Control, HTTP 1.0=>pragma and Expires=>proxy

# for html,htm,json,js,css as follows
<filesMatch "\.(html|htm|json|js|css)$">
  FileETag None
  <ifModule mod_headers.c>
     Header unset ETag
     Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
     Header set Pragma "no-cache"
     Header set Expires "0"
  </ifModule>
</filesMatch>

Le serveur ajoute l'en-tête Etag à une réponse contenant une ressource servie et que le client met en cache la ressource et se souvient de sa balise d'entité (la valeur de l'ETAG).

Autre moyen simple serait d'utiliser la chaîne de requête, d'incrémenter la requête à chaque fois que vous apportez une modification ou utilisez une chaîne unique lorsque vous apportez des modifications, par exemple comme suit. Vous n'êtes pas obligé de changer Apache Config Browser chargera un script respectif.

# first version
<script src="path/to/your/app-loader.js?version=1"></script>
1
Akshay Hegde