Existe-t-il une norme pour quelles actions F5et Ctrl + F5déclencheurs dans les navigateurs Web?
J'ai déjà fait des expériences dans IE6 et Firefox 2.x. L' F5 actualisation déclencherait une demande HTTP envoyée au serveur avec un en- If-Modified-Since
tête, alors qu'elle Ctrl + F5n'aurait pas un tel en-tête. À ma connaissance, F5 essaiera d'utiliser le contenu mis en cache autant que possible, tandis que Ctrl + F5 vise à abandonner tout le contenu mis en cache et à récupérer à nouveau tout le contenu des serveurs.
Mais aujourd'hui, j'ai remarqué que dans certains des derniers navigateurs (Chrome, IE8) cela ne fonctionne plus de cette façon. Les deux F5et Ctrl + F5envoyer l'en- If-Modified-Since
tête.
Alors, comment est-ce censé fonctionner, ou (s'il n'y a pas de norme) comment les principaux navigateurs diffèrent-ils dans la façon dont ils implémentent ces fonctionnalités de rafraîchissement?
Réponses:
En général:
F5peut vous donner la même page même si le contenu est modifié, car il peut charger la page à partir du cache. Mais Ctrl- F5force une actualisation du cache et garantit que si le contenu est modifié, vous obtiendrez le nouveau contenu.
la source
Cela dépend du navigateur, mais ils se comportent de manière similaire.
J'ai testé FF, IE7, Opera et Chrome.
F5met généralement à jour la page uniquement si elle est modifiée. Le navigateur essaie généralement d'utiliser tous les types de cache autant que possible et ajoute un en-tête "If-modified-since" à la demande. Opera diffère en envoyant un "Cache-Control: no-cache".
CTRL- F5est utilisé pour forcer une mise à jour, sans tenir compte de tout cache. IE7 ajoute un "Cache-Control: no-cache", tout comme FF, qui ajoute également "Pragma: no-cache". Chrome fait un "If-modified-since" normal et Opera ignore la clé.
Si je me souviens bien, c'est Netscape qui a été le premier navigateur à ajouter la prise en charge du contrôle du cache en ajoutant "Pragma: No-cache" lorsque vous avez appuyé sur CTRL- F5.
Modifier: tableau mis à jour
Le tableau ci-dessous est mis à jour avec des informations sur ce qui se passera lorsque le bouton d'actualisation du navigateur est cliqué (après une demande de Joel Coehoorn ), et l'en-tête "max-age = 0" Cache-control-header.
Tableau mis à jour, 27 septembre 2010
Versions testées:
Remarques:
La version 3.0.6 envoie I et C, mais 3.1.6 ouvre la page dans un nouvel onglet, faisant une demande normale avec seulement "I".
La version 10.62 ne fait rien. 9.61 pourrait faire C sauf s'il s'agissait d'une faute de frappe dans mon ancienne table.
Remarque à propos de Chrome 6.0.472 : si vous effectuez un rechargement forcé (comme CTRL- F5), il se comporte comme si l'URL était marquée en interne pour toujours effectuer un rechargement forcé. Le drapeau est effacé si vous allez dans la barre d'adresse et appuyez sur Entrée.
la source
J'ai implémenté une page compatible avec plusieurs navigateurs pour tester le comportement de rafraîchissement du navigateur (voici le code source ) et obtenir des résultats similaires à @some, mais pour les navigateurs modernes:
la source
Au moins dans Firefox (v3.5), le cache semble être désactivé plutôt que simplement effacé. S'il y a plusieurs instances de la même image sur une page, elle sera transférée plusieurs fois. C'est également le cas pour les
img
balises qui sont ajoutées ultérieurement via Ajax / JavaScript.Donc, au cas où vous vous demandez pourquoi le navigateur continue de télécharger la même petite icône plusieurs centaines de fois sur votre site Ajax d'actualisation automatique, c'est parce que vous avez initialement chargé la page en utilisant CTRL- F5.
la source
IE7 / 8/9 semble se comporter différemment selon que la page est active ou non.
Si vous cliquez sur la page et CTRL+ F5puis "Cache-Control: no-cache" est inclus dans les en-têtes de demande. Si vous cliquez dans la barre Emplacement / Adresse, appuyez sur CTRL+ F5ce n'est pas le cas.
la source
Lorsque l'utilisateur appuie sur F5 bien que la nouvelle demande soit envoyée au serveur Web et obtienne également une réponse à la demande. Mais lorsque l'en-tête responce est analysé, il vérifie les informations requises dans le cache du navigateur. Si les informations requises dans le cache n'ont pas expiré, ces informations sont restaurées à partir du cache lui-même.
Lorsque l'utilisateur clique sur CTRL- F5même alors, la nouvelle demande est envoyée au serveur Web et obtient une réponse. Mais cette fois, lorsque l'en-tête responce est analysé, il ne vérifie pas les informations requises dans le cache et n'apporte que toutes les informations mises à jour du serveur de formulaire.
la source