Comment vider le cache d'un navigateur avec JavaScript?
Nous avons déployé le dernier code JavaScript, mais nous ne pouvons pas obtenir le dernier code JavaScript.
Note éditoriale: Cette question est semi-dupliquée aux endroits suivants, et la réponse à la première des questions suivantes est probablement la meilleure. Cette réponse acceptée n'est plus la solution idéale.
Comment forcer le navigateur à recharger les fichiers CSS / JS en cache?
Comment puis-je forcer les clients à actualiser les fichiers JavaScript?
Recharger dynamiquement les données source Javascript / json locales
javascript
caching
Dylan Brams
la source
la source
?version=xxx
à vos fichiers liés JS via une étape de génération. Chaque nouvelle version demandera une nouvelle version du fichier JS.Réponses:
Vous pouvez appeler window.location.reload (true) pour recharger la page actuelle. Il ignorera tous les éléments mis en cache et récupérera de nouvelles copies de la page, des css, des images, du JavaScript, etc. du serveur. Cela n'efface pas tout le cache, mais a pour effet de vider le cache de la page sur laquelle vous vous trouvez.
Cependant, votre meilleure stratégie consiste à créer une version du chemin ou du nom de fichier comme mentionné dans diverses autres réponses. En outre, consultez Revving Filenames: n'utilisez pas de chaîne de requête pour des raisons de ne pas l'utiliser
?v=n
comme schéma de version.la source
Vous ne pouvez pas vider le cache avec javascript. Une méthode courante consiste à ajouter le numéro de révision ou l'horodatage de la dernière mise à jour au fichier, comme ceci:
ou
myscript.js?updated=1234567890
la source
Essayez de changer le src du fichier JavaScript? De ceci:
Pour ça:
Cette méthode devrait forcer votre navigateur à charger une nouvelle copie du fichier JS.
la source
Autre que la mise en cache toutes les heures ou toutes les semaines, vous pouvez mettre en cache en fonction des données du fichier.
Exemple (en PHP):
ou même utiliser l'heure de modification du fichier:
la source
Vous pouvez également forcer le rechargement du code toutes les heures, comme ceci, en PHP:
ou
la source
mettez ceci à la fin de votre modèle:
la source
essayez d'utiliser ceci
Pour ça:
la source
Voici un extrait de ce que j'utilise pour mon dernier projet.
Du contrôleur:
De la vue:
Notre processus de publication génère un fichier avec le numéro de révision de la version actuelle. Cela fonctionne en encodant l'URL de ce fichier et en l'utilisant comme un buster de cache. En cas de basculement, si ce fichier n'existe pas, l'année et le numéro de semaine sont utilisés pour que la mise en cache fonctionne toujours, et il sera actualisé au moins une fois par semaine.
En outre, cela fournit un contournement du cache pour chaque chargement de page dans l'environnement de développement afin que les développeurs n'aient pas à se soucier de vider le cache pour toutes les ressources (javascript, css, appels ajax, etc.).
la source
ou vous pouvez simplement lire le fichier js par serveur avec file_get_contets puis mettre en écho dans l'en-tête le contenu de js
la source
Peut-être que "vider le cache" n'est pas aussi simple qu'il devrait l'être. Au lieu de vider le cache de mes navigateurs, j'ai réalisé que "toucher" le fichier changerait en fait la date du fichier source mis en cache sur le serveur (Testé sur Edge, Chrome et Firefox) et la plupart des navigateurs téléchargeront automatiquement la nouvelle copie la plus récente de ce qui est sur votre serveur (code, graphiques tout multimédia aussi). Je vous suggère de simplement copier les scripts les plus récents sur le serveur et la solution «faire la chose tactile» avant que votre programme ne s'exécute, de sorte qu'il changera la date de tous vos fichiers problématiques en une date et une heure les plus récentes, puis il téléchargera une nouvelle copie à votre navigateur:
... le reste de votre programme ...
Il m'a fallu un certain temps pour résoudre ce problème (car de nombreux navigateurs agissent différemment pour différentes commandes, mais ils vérifient tous l'heure des fichiers et se comparent à votre copie téléchargée dans votre navigateur, si la date et l'heure sont différentes, feront l'actualisation), si vous ne peut pas aller dans le bon sens, il y a toujours une autre solution utilisable et meilleure. Meilleures salutations et bon camping.
la source
J'ai eu quelques soucis avec le code proposé par yboussard. La boucle j interne ne fonctionnait pas. Voici le code modifié que j'utilise avec succès.
la source
Si vous utilisez php, vous pouvez faire:
la source
Cache.delete () peut être utilisé pour les nouveaux Chrome, Firefox et Opera.
la source
You don't have to use it in conjunction with service workers, even though it is defined in the service worker spec.
Veuillez ne pas donner d'informations erronées. L'API du cache est un autre type de cache du cache http
Le cache HTTP est déclenché lorsque le serveur envoie les en- têtes corrects , vous ne pouvez pas accéder avec javasvipt.
L'api du cache en revanche est déclenchée quand vous le souhaitez, elle est utile lorsque vous travaillez avec un service worker afin que vous puissiez intersecter la requête et y répondre à partir de ce type de cache voir: ilustration 1 ilustration 2 cours
Vous pouvez utiliser ces techniques pour avoir toujours un nouveau contenu sur vos utilisateurs:
Je recommanderais le troisième voir
la source
Vous pouvez également désactiver la mise en cache du navigateur avec des balises méta HTML, il suffit de mettre des balises html dans la section head pour éviter que la page Web ne soit mise en cache pendant que vous codez / testez et lorsque vous avez terminé, vous pouvez supprimer les balises méta.
(dans la section tête)
Actualisez votre page après l'avoir collé dans la tête et devrait également actualiser le nouveau code javascript.
Ce lien vous donnera d'autres options si vous en avez besoin http://cristian.sulea.net/blog/disable-browser-caching-with-meta-html-tags/
ou vous pouvez simplement créer un bouton comme ça
il s'actualise et évite la mise en cache, mais il sera là sur votre page jusqu'à ce que vous ayez terminé le test, alors vous pouvez le retirer. La meilleure option est ce que je pense.
la source
J'ai tendance à versionner mon framework puis à appliquer le numéro de version aux chemins de script et de style
la source
fermez et ouvrez le navigateur après avoir exécuté le code dans la console.
la source
window.location.reload(true)
semble avoir été déconseillé par la norme HTML5. Une façon de faire cela sans utiliser de chaînes de requête consiste à utiliser l'en-Clear-Site-Data
tête , qui semble normalisé .la source
Parce que le navigateur cache le même lien, vous devez ajouter une fin de nombre aléatoire de l'URL.
new Date().getTime()
générer un nombre différent.Ajoutez simplement la
new Date().getTime()
fin du lien comme un appelProduction:
https://stackoverflow.com/questions.php?1571737901173
la source