Maison  >  Questions et réponses  >  le corps du texte

Quelles requêtes seront générées par le rafraîchissement « F5 » et « Ctrl + F5 » du navigateur ?

Existe-t-il une norme pour les actions que

F5 et Ctrl+F5 déclenchent dans les navigateurs Web ?

J'ai fait des expériences avec IE6 et Firefox 2.x. Un rafraîchissement F5 déclenchera une requête HTTP au serveur contenant un en-tête If-Modified-Since, tandis que Ctrl+F5 n'aura pas un tel en-tête. D'après ma compréhension, F5 essaiera d'exploiter autant que possible le contenu mis en cache, tandis que Ctrl+F5 vise à supprimer tout le contenu mis en cache et à tout récupérer à nouveau sur le serveur.

Mais aujourd'hui, j'ai remarqué que dans certains des derniers navigateurs (Chrome, IE8), cela ne fonctionne plus de cette façon. F5 et Ctrl+F5 envoient tous deux l'en-tête If-Modified-Since.

Alors, comment cela est-il censé fonctionner, ou (s'il n'y a pas de norme) en quoi les principaux navigateurs diffèrent-ils dans la manière dont ils implémentent ces fonctions d'actualisation ?

P粉593649715P粉593649715397 Il y a quelques jours623

répondre à tous(2)je répondrai

  • P粉665679053

    P粉6656790532023-10-12 00:09:28

    Cela dépend du navigateur, mais ils se comportent de la même manière.

    F5 Généralement, ne met à jour une page que lorsqu'elle a été modifiée. Les navigateurs modernes envoient Cache-Control: max-age=0 pour indiquer la durée maximale (par rapport à la durée de la demande) pendant laquelle toute ressource mise en cache sera considérée comme fraîche.

    CTRL-F5 est utilisé pour forcer une mise à jour, en ignorant tout cache. Les navigateurs modernes envoient Cache-Control: no-cachePragma: No-cache

    Si je me souviens bien, Netscape a été le premier navigateur à ajouter la prise en charge du contrôle du cache en ajoutant lorsque vous appuyez sur CTRLPragma: No-cache - < kbd>F5.

    ┌───────────┬──────────────┬─────┬─────────────────┬──────────────────────────────┐
    │ Version 4 │      F5      │  R  │      CLICK      │ Legend:                      │
    │2021 MAY 19├──┬──┬──┬──┬──┼──┬──┼──┬──┬──┬──┬──┬──┤ C = Cache-Control: no-cache  │
    │           │  │S │C │A │A │C │C │  │S │C │A │A │C │ I = If-Modified-Since        │
    │           │  │H │T │L │L │T │T │  │H │T │L │L │T │ M = Cache-Control: max-age=0 │
    │           │  │I │R │T │T │R │R │  │I │R │T │T │R │ N = Not tested               │
    │           │  │F │L │  │G │L │L │  │F │L │  │G │L │ P = Pragma: No-cache         │
    │           │  │T │  │  │R │  │+ │  │T │  │  │R │+ │ - = ignored                  │
    │           │  │  │  │  │  │  │S │  │  │  │  │  │S │                              │
    │           │  │  │  │  │  │  │H │  │  │  │  │  │H │ With 'CLICK' I refer to a    │
    │           │  │  │  │  │  │  │I │  │  │  │  │  │I │ mouse click on the browsers  │
    │           │  │  │  │  │  │  │F │  │  │  │  │  │F │ refresh-icon.                │
    │           │  │  │  │  │  │  │T │  │  │  │  │  │T │                              │
    │           │  │  │  │  │  │  │  │  │  │  │  │  │  │ 1: Version 3.0.6 sends I     │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    and C, but 3.1.6 opens    │
    │Brave 1.24 │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    the page in a new tab,    │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    making a normal request   │
    │Chrome 1   │MI│MI│MI│- │- │MI│- │MI│MI│MI│MI│MI│N │    with only I.              │
    │Chrome 6   │MI│CP│CP│- │- │MI│CP│MI│CP│CP│MI│- │N │ 2: Version 10.62 does        │
    │Chrome 90  │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    nothing. 9.61 might do C  │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    unless it was a typo in   │
    │Edge 90    │M │CP│CP│- │- │M │CP│M │CP│CP│M │CP│CP│    my old table.             │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤ 3: Opens the currernt tab in │
    │Firefox 3.x│MI│- │CP│- │- │MI│CP│MI│CP│1 │M │MI│N │    a new tab, but does not   │
    │Firefox 89 │M │- │CP│- │M │M │CP│M │CP│3 │M │M │3 │    refresh the page if it is │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤    cached in the browser.    │
    │MSIE 8, 7  │I │- │C │- │I │I │  │I │I │C │I │I │N │                              │
    ├───────────┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┼──┤                              │
    │Opera 10, 9│C │- │- │2 │- │C │- │C │C │C │C │- │N │                              │
    │Opera 76   │M │CP│CP│- │- │M │- │M │CP│CP│M │CP│CP│                              │
    ├───────────┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──┴──────────────────────────────┤
    │                    https://stackoverflow.com/a/385491/36866                     │
    └─────────────────────────────────────────────────────────────────────────────────┘

    Remarque sur Chrome 6.0.472 : Si vous effectuez un rechargement forcé (par exemple CTRL-F5), il se comporte comme si l'URL était marquée en interne comme toujours un rechargement forcé. Si vous accédez à la barre d'adresse et appuyez sur Entrée, le drapeau sera effacé.

    répondre
    0
  • P粉675258598

    P粉6752585982023-10-12 00:02:55

    De manière générale :

    Même si le contenu change,

    F5 peut vous servir la même page car il peut charger la page depuis le cache. Mais Ctrl+F5 forcera une actualisation du cache et garantira que vous obtiendrez du nouveau contenu s'il change.

    répondre
    0
  • Annulerrépondre