408 votes

Quelles demandes faire navigateurs ' génèrent des actualisations de la touche « F5 » et « Ctrl + F5 » ?

Est-il une norme pour quelles actions F5 et Ctrl+F5 déclencher des navigateurs web?

Une fois, j'ai fait l'expérience dans IE6 et Firefox 2.x. Le F5 d'actualisation se traduirait par une requête HTTP envoyée au serveur avec un "if-Modified-Since" en-tête, tandis que Ctrl + F5 n'aurait pas un tel en-tête. Dans ma compréhension, la touche F5 va essayer d'utiliser le contenu mis en cache autant que possible, tandis que Ctrl + F5 est destiné à abandonner tout contenu mis en cache et juste de récupérer tout le contenu à partir des serveurs de nouveau.

Mais aujourd'hui, j'ai remarqué que dans certains des derniers navigateurs (Chrome, IE8) il ne fonctionne pas de cette façon, plus. Les deux F5 et Ctrl + F5 d'envoyer le "if-Modified-Since" en-tête.

Alors, comment est-ce censé travailler, ou (si il n'y a pas de standard) comment les principaux navigateurs diffèrent dans la façon dont ils mettent en œuvre ces actualiser fonctionnalités?

529voto

some Points 18965

C'est dans le navigateur, mais ils se comportent de façon similaire.

J'ai testé FF, IE7, Opera et Chrome.

F5 généralement les mises à jour de la page seulement si elle est modifiée. Le navigateur essaie d'utiliser tous les types de cache, autant que possible, et ajoute un "if-modified-since" en-tête de la demande. Opera se distingue par l'envoi d'un "Cache-Control: no-cache".

CTRL-F5 est utilisé pour forcer une mise à jour, en faisant abstraction de toute la mémoire cache. IE7 ajoute un "Cache-Control: no-cache", tout comme FF, qui ajoute également "Pragma: no-cache". Chrome ne normal "if-modified-since" et de l'Opéra ignore la clé.

Si je me souviens bien c'était Netscape qui a été le premier navigateur pour ajouter le support du cache-control par l'ajout de "Pragma: No-cache" lorsque vous avez appuyé sur CTRL-F5.

Edit: mise à Jour de la table

Le tableau ci-dessous est à jour avec des informations sur ce qui va se passer lorsque le navigateur de l'actualisation de bouton est cliqué (après une demande par Joel Coehoorn), et le "max-age=0" Cache-control-d'en-tête.

Tableau mis à jour le 27 septembre 2010

+------------+-----------------------------------------------+
|  UPDATED   |                Firefox 3.x                    |
|27 SEP 2010 |  +--------------------------------------------+
|            |  |             MSIE 8, 7                      |
| Version 3  |  |  +-----------------------------------------+
|            |  |  |          Chrome 6.0                     |
|            |  |  +  +--------------------------------------+
|            |  |  |  |       Chrome 1.0                     |
|            |  |  |  |  +-----------------------------------+
|            |  |  |  |  |    Opera 10, 9                    |
|            |  |  |  |  |  +--------------------------------+
|            |  |  |  |  |  |                                |
+------------+--+--+--|--+-----------------------------------+
|          F5|IM|I |IM|IM|C |                                |
|    SHIFT-F5|- |- |CP|IM|- | Legend:                        |
|     CTRL-F5|CP|C |CP|IM|- | I = "If-Modified-Since"        |
|      ALT-F5|- |- |- |- |*2| P = "Pragma: No-cache"         |
|    ALTGR-F5|- |I |- |- |- | C = "Cache-Control: no-cache"  |
+------------+--+--+--|--+--+ M = "Cache-Control: max-age=0" |
|      CTRL-R|IM|I |IM|IM|C | - = ignored                    |
|CTRL-SHIFT-R|CP|- |CP|- |- |                                |
+------------+--+--+--|--+--+                                |
|       Click|IM|I |IM|IM|C | With 'click' I refer to a      |
| Shift-Click|CP|I |CP|IM|C | mouse click on the browsers    |
|  Ctrl-Click|*1|C |CP|IM|C | refresh-icon.                  |
|   Alt-Click|IM|I |IM|IM|C |                                |
| AltGr-Click|IM|I |- |IM|- |                                |
+------------+--+--+--+--+--+--------------------------------+

Versions testées:

  • Firefox 3.1.6 et 3.0.6 (WINXP)
  • MSIE 8.0.6001 et 7.0.5730.11 (WINXP)
  • Chrome 6.0.472.63 et 1.0.151.48 (WINXP)
  • Opéra 10.62 et 9.61 (WINXP)

Notes:

  1. La Version 3.0.6 envoie I et C, mais 3.1.6 ouvre la page dans un nouvel onglet faire une requête normale avec seulement "je".

  2. Version 10.62 ne fait rien. 9.61 peut faire C, à moins que c'était une faute de frappe dans mon ancienne table.

Remarque à propos de google Chrome 6.0.472: Si vous faites un rechargement forcé (comme CTRL-F5), il se comporte comme l'url est marqué en interne pour toujours effectuer un rechargement forcé. La case est décochée si vous allez à la barre d'adresse et appuyez sur entrée.

330voto

dancavallaro Points 5639

De manière générale :

F5peut vous donner la même page même si le contenu est modifié, car il peut charger la page du cache. Mais Ctrl - F5 force une actualisation du cache et garantira que si le contenu est modifié, vous obtiendrez le nouveau contenu.

69voto

Pavel Podlipensky Points 3943

J’ai implémenté la page compatible multi-navigateurs pour tester le comportement d’actualisation du navigateur et obtenir des résultats similaires à @some, mais pour les navigateurs modernes :

enter image description here

10voto

Marc Ermshaus Points 405

Au moins dans Firefox (v3.5), cache semble être désactivé plutôt que de simplement effacé. S'il existe plusieurs instances de la même image sur une page, elle sera transférée à plusieurs reprises. C'est également le cas pour l' img balises qui sont ajoutés par la suite via Ajax/JavaScript.

Ainsi dans le cas où vous vous demandez pourquoi le navigateur conserve le téléchargement de la même petite icône à quelques centaines de fois sur votre auto-actualisation de site en Ajax, c'est parce que vous initialement chargée de la page à l'aide de CTRL-F5.

4voto

Phil Haselden Points 1215

IE7/8/9 semblent se comporter différemment selon que la page a le focus ou non.

Si vous cliquez sur la page et CTRL + F5 puis « Cache-Control : non-cache » est inclus dans les en-têtes de demande. Si vous cliquez dans la barre d’adresse puis appuyez sur CTRL + F5 il n’est pas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X