web-dev-qa-db-fra.com

Forcer Google Chrome à rechercher de nouveaux fichiers JavaScript chaque fois que j'accède à un site Web

Donc, si je vais aux options Internet dans Internet Explorer: enter image description here

Je peux ajuster les paramètres pour quand IE vérifie les mises à jour: enter image description here

Puis-je faire quelque chose de similaire dans Google Chrome? À l'heure actuelle, lorsque je change de fichier JavaScript et que je débogue à partir de Visual Studio, Chrome utilise toujours la version en cache plutôt que la version modifiée. Afin de pouvoir utiliser la version actuelle, je dois effacer manuellement mes fichiers/cache Internet temporaires, ce qui est vraiment gênant.

25
EJoshuaS

Option 1: Désactiver le cache temporairement

  1. Open Developer Tools (Presse) F12 ou Menu, Autres outils, Outils de développement)
  2. Ouvrez les paramètres des outils de développement (appuyez sur F1 ou Menu DevTools, Paramètres)
  3. Cochez la case "Désactiver le cache (tant que DevTools est ouvert)" dans l'en-tête Réseau du volet Préférences.

Option 2: Désactiver le cache pour la session

Démarrez Chrome avec les commutateurs de ligne de commande --disk-cache-size=1 --media-cache-size=1, qui limiteront les caches à 1 octet, ce qui désactive effectivement le cache.

Option 3: Actualisation manuelle forcée

Rechargez la page actuelle en ignorant le contenu mis en cache: Shift+F5 ou Ctrl+Shift+r

Raccourcis clavier Chrome - Aide Chrome (Sous "Raccourcis de page Web")

Option 4: Options de rechargement supplémentaires ( Source )

Une fois les outils de développement ouverts, cliquez avec le bouton droit sur le bouton Recharger pour afficher un menu de rechargement contenant les éléments suivants:

  • Rechargement normal (Ctrl + R)
  • Rechargement dur (Ctrl + Maj + R)
  • Cache vide et rechargement dur
54
Steven

Ce n'est peut-être pas lié à 100% à l'actualisation du chrome mais à un développement ultérieur. Comme @Dom, vous pouvez ajouter un? V = # après votre ressource. Une façon d'automatiser le processus consiste à hacher le contenu dudit fichier et à l'utiliser comme version.

J'ai un code de code sur la façon de procéder en C # (Razor pour la mise en œuvre) si cela peut aider.

Assistant:

public static string HashUrl(string relativeUrl)
    {
        var server = HttpContext.Current.Server;
        if (File.Exists(server.MapPath(relativeUrl)))
        {
            byte[] hashData;
            using (var md5 = MD5.Create())
            using (var stream = File.OpenRead(server.MapPath(relativeUrl)))
                hashData = md5.ComputeHash(stream);

            return relativeUrl.Replace("~", "") + "?v=" + BitConverter.ToString(hashData).Replace("-", "");
        }
        return relativeUrl + "?v=notFound";
    }

La mise en oeuvre:

<link rel="stylesheet" [email protected]("~/Controllers/Home/Views/Index.css") />

J'espère que cela t'aides

EDIT --- Certains ont demandé un peu de temps pour la construction et pour 1000 petites ressources, cela prend environ 11 ms.

https://en.code-bude.net/2013/08/07/md5-hashes-in-c-benchmark-and-speed-%E2%80%8B%E2% 80% 8Boptimization/

enter image description herehttps://en.code-bude.net/wp-content/uploads/2013/08/md5_performance_benchmark_2.png

8
fred beauchamp

Dans d'autres cas où cela peut s'avérer impossible, par exemple si vous souhaitez forcer une actualisation sur l'ordinateur d'un utilisateur final auquel vous n'avez pas accès, vous pouvez ajouter un numéro de version au script. name en tant que paramètre de requête obligeant le navigateur à l'identifier en tant que fichier différent . c'est à dire. example.js?v=1. N'oubliez pas que vous devez modifier le nombre à chaque rechargement pour le forcer.

Vous pouvez également le faire avec le développement local, mais la méthode des outils de développement est beaucoup plus efficace.

5
Dom

en plus de @Steven answer, lorsque vous ouvrez la console des outils de développement , vous pouvez cliquer avec le bouton droit de la souris sur le bouton de rafraîchissement et utilisez le menu déroulant.

Dans ce menu, vous obtenez une option pour "Vider le cache et recharger physiquement" .

Est ce que vous cherchez.

3
Leze

Si vous développez le site, sachez que Chrome requiert le paramètre must-revalidate dans Cache-Control afin de permettre une nouvelle récupération des fichiers lorsqu'ils sont modifiés sur le serveur.

Les autres réponses vous expliquent comment appuyer sur SHIFT-F5 pour forcer votre propre version de Chrome à récupérer tous les fichiers. Mais est-il raisonnable de dire à tous les utilisateurs du site de le faire chaque fois que le site change? Si vous définissez Cache-Control pour inclure must-revalidate, Chrome vérifie si des fichiers ont été modifiés, puis les télécharge correctement en cas de besoin.

Voir les détails de cet article de blog: https://agiletribe.wordpress.com/2018/01/29/caching-for-chrome/

1
AgilePro