Comment forcer Internet Explorer (IE) à recharger VRAIMENT la page?

154

Lorsque j'utilise Internet Explorer 8 pour tester mon application Web, je constate souvent que celle-ci ne recharge pas la page. Je ne vois donc pas mes modifications. Cela a entraîné beaucoup de perte de temps et de frustration en se demandant pourquoi mon correctif "ne fonctionnait pas" - alors qu'en fait le navigateur ne chargeait jamais la version corrigée.

J'ai essayé le bouton Actualiser. J'ai essayé F5, Control- F5, Control- R, Control- Shift- R, tenue Controlen cliquant sur le bouton Actualiser, tout ce que je pouvais penser - il ne se charge pas en fait le nouveau contenu du serveur. Je l'ai confirmé avec Fiddler.

Comment puis-je dire IE " Je me fiche de ce que vous pensez que vous avez mis en cache, je veux recharger la page - pas vraiment, je ne veux dire cette fois -ci , honnête à Dieu, je veux que vous réellement aller au serveur et tout télécharger à nouveau "?

EMP
la source
2
Utilisez une fenêtre de navigation privée, peut-être?
Josh Lee
3
Est-il possible que votre serveur Web serve l'ancienne page (via cache) au lieu de la nouvelle version? Peu importe combien de fois vous rechargez dans ce cas.
Michael Todd
1
Michael, non, j'ai vérifié dans Fiddler qu'IE n'obtient pas le contenu de la page du serveur.
EMP
Contrôle + F5 passe devant la cache, c'est étrange si ce n'est pas le cas ....
Tamara Wijsman
2
Meilleur libellé d'une question que j'ai rencontré jusqu'à présent sur StackExchange!
user785529

Réponses:

126
  1. Sélectionnez Outils >> Options Internet .
  2. Cliquez sur le bouton Paramètres dans l' historique de navigation .
  3. Sélectionnez le bouton radio Chaque fois que je visite la page Web .
  4. Cliquez sur OK pour fermer la boîte de dialogue Paramètres.
  5. Cliquez sur OK pour fermer la boîte de dialogue Options Internet.
Gonzalo
la source
3
Si c'est ce que vous avez fait, cochez la comme réponse
Earlz
34
Cela peut nuire aux performances de navigation générale, mais uniquement si vous faites votre navigation générale avec IE ...
Joel Mueller
3
Ev: le côté utilisateur est généralement corrigé en modifiant les URL de tous les scripts et feuilles de style chaque fois que vous touchez le code, généralement en ajoutant un ?version-numbersuffixe de chaîne de requête.
bobince
4
"Chaque fois que je visite la page Web" ne fait probablement pas ce que vous pensez. Voir fiddler2.com/redir/?id=httpperf
EricLaw
6
Je suis d'accord avec @EricLaw, si vous utilisez Fiddler, vous verrez que les fichiers associés à la page ne sont parfois pas rechargés même lorsque "Chaque fois que je visite la page Web" est défini. Utilisez le menu de la barre d’outils IE: Cache> Toujours actualiser à partir du serveur ou le bouton Vider le cache dans Fiddler.
Phillip Ngan
43

Comme il est indiqué que IE8 est le navigateur, vous pouvez appuyer sur F12pour ouvrir les outils de développement, sélectionner le menu Cache en haut, puis toujours actualiser à partir du serveur pour contourner le cache.

En bref, appuyez surF12 . Cliquez sur Cache -> Toujours actualiser à partir du serveur

Vous pouvez simplement vider votre cache ici aussi, si telle est l'action souhaitée. L'option Toujours actualiser n'est pas une option globale et n'entrave pas les performances globales dans IE.

IE7 possède également des outils de développement, mais ils doivent être installés séparément. Vous pouvez également utiliser les outils de développement IE8 pour exécuter le navigateur en mode IE7.

Brandon
la source
+1 pour résoudre ceci sans utiliser une option globale.
Marcus Riemer
Semblable à ici , cela n’actualise pas toujours tout le contenu. Et je ne sais pas non plus que ce rechargement est bon pour toutes les URL - chaque fenêtre semble avoir parfois son propre F12. C’est une façon plus complète de procéder si, si et seulement si vous avez accès à l’inclusion javascript.
Ruffin
1
Comment faites-vous cela dans IE 11? Il n'y a pas d'option de cache que je puisse trouver.
David Thielen
4
Dans IE 11, cette option est sous F12 -> Réseau -> 3ème icône à gauche.
Den
22

Ctrl+ F5dans IE recharge la page en ignorant le cache

Mfeingold
la source
26
Non, ça ne va pas. Je sais qu'il ignore la mémoire cache de temps en temps, mais pas tout le temps.
EMP
16
Ctrl + f5 recharge toujours la page du serveur. Ce qu'elle ne fait pas nécessairement, c'est recharger les fichiers supplémentaires qui font référence à la page
2
Assez juste - mais j'en ai besoin pour recharger TOUT.
EMP
1
CTRL + F5 doit effectuer une actualisation complète de la page et de toutes ses ressources. Les appels passés via XMLHTTPRequest ultérieurement peuvent être mis en cache (si vous ne souhaitez pas les mettre en cache, envoyez les en-têtes sans cache appropriés). Le seul inconvénient est que si la page en question est XML, elle est réellement chargée via MSXML et que DocHost NE respecte PAS correctement les touches CTRL + Rafraîchir.
Eric Law
3
Ctrl + F5 ne recharge pas toujours tout du serveur. Dans mes tests, javascript contenu dans le fichier html ne se recharge pas après avoir appuyé sur ctrl-f5 même si la page a été modifiée.
Rcarver
18

IE est très désireux de mettre en cache des pages, même lorsque vous lui dites de ne pas le faire via des en-têtes de cache. Microsoft KB 234067 explique les incantations requises. En bref, vous devez fournir les en-têtes suivants.

Pragma: no-cache
Cache-Control: no-cache
Expires: <some time in the past>

Le paramétrage Expires = -1(comme recommandé dans l'article de la base de connaissances) devrait fonctionner pour la plupart des frameworks; les navigateurs sont tenus de traiter les formats de date non valides comme étant passés ( RFC 2616 ).

Dans .NET, vous pouvez le faire sur une granularité page par page en utilisant cet ensemble de méthodes avant d'appeler la page Web:

HttpContext.Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
HttpContext.Response.Cache.SetValidUntilExpires(false);
HttpContext.Response.Cache.SetRevalidation(System.Web.HttpCacheRevalidation.AllCaches);
HttpContext.Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
HttpContext.Response.Cache.SetNoStore();

voir: http://www.localwisdom.com/blog/2012/10/force-a-page-refresh-on-a-asp-net-mvc-website/ Fonctionne bien pour MVC3.0.

Marcelo Cantos
la source
1
Faux. IE6 + respecte pleinement tous les en-têtes interdisant le cache. fiddler2.com/redir/?id=httpperf
EricLaw
C'est très bien, mais cela n'aide pas la question de WRT.
Matthias Urlichs
6

L'onglet Réseau de la barre d'outils de développeur Web comporte un bouton permettant d'effacer facilement le cache. Je l'utilise habituellement dans le cas que vous décrivez.

Ce n'est pas idéal, car vous ne voulez peut-être pas vider votre cache en entier, mais comme je n'utilise pas IE pour la navigation en général, cela fonctionne pour moi.

pkaeding
la source
4

Cela se produit encore dans IE9. Étonnamment, la réponse est Ctrl- Shiftbouton -Refresh

PandaWood
la source
Cela fonctionne-t-il différemment du bouton Ctrl-Actualiser?
Jon Onstott
3

Incidemment, le problème existera peut-être également pour les visiteurs de votre site Web. J'ai vu l'idée suivante dans un livre AJAX ...

Utilisez PHP pour ajouter un jeton aléatoire à l'URL actuelle afin que le navigateur soit amené à penser qu'il s'agit d'une page séparée.

Moshe
la source
Rend les URL laides, cependant.
LawrenceC
2

J'ai eu le même problème moi-même. Je crois que la seule façon de le faire est d'effacer le cache (Sécurité -> Supprimer l'historique de navigation). Cochez uniquement "Fichiers Internet temporaires".

J'espère que cela t'aides.

jchapa
la source
2

Maintenez la touche altou ctrlenfoncée lorsque vous cliquez sur le bouton d'actualisation.

niaccm
la source
1

Je conviens que l'ajout d'un jeton aléatoire à l'URL est la solution la plus fiable et qu'une fois implémenté, l'utilisateur n'a plus rien à faire.

Mis à part l'approche par jetons aléatoires, ce que j'ai tendance à toujours faire pour forcer un rechargement complet de la page et de tous ses fichiers dépendants, je place simplement mon curseur à la fin de l'URL et appuie sur Entrée. Fonctionne à chaque fois ... et j'utilise IE 8.

Jerry
la source
1

F12-> CTRL+ Rest légèrement plus rapide pour IE9 +. Comme les gens l'ont mentionné, IE n'efface pas le cache de manière très intelligente, contrairement à Chrome.

Chris S
la source
1

Je sais que cela peut sembler un peu étrange ... mais une chose que j'ai remarquée récemment, c'est que vous obtenez parfois des résultats différents en fonction de COMMENT vous "actualisez". J'ai vu le comportement suivant:

F5> charge à partir du cache sans actualisation,
Alt+ D, ENTER> actualise réellement en ignorant le cache.
( Alt+ Dpeut être remplacé en cliquant dans la barre d'adresse)

eidylon
la source