ブラウザーの「F5」および「Ctrl + F5」の更新はどのような要求を生成しますか?


394

どのような行動の基準がありますか F5Ctrl + F5Webブラウザーとトリガーを行うますか?

私はかつてIE6とFirefox 2.xで実験をしました。F5 リフレッシュしてサーバーに送信されたHTTPリクエストトリガするIf-Modified-Since一方で、ヘッダのCtrl + F5ようなヘッダを持っていないであろう。私の理解では、F5 はキャッシュされたコンテンツをできるだけ利用しようとしますが、キャッシュされたCtrl + F5 すべてのコンテンツを放棄し、サーバーからすべてのコンテンツをもう一度取得することを目的としています。

しかし、今日、いくつかの最新のブラウザー(Chrome、IE8)では、この方法で動作しないことに気付きました。両方ともヘッダーF5Ctrl + F5送信しIf-Modified-Sinceます。

では、これはどのように機能するのでしょうか、または(標準がない場合)主要なブラウザは、これらの更新機能の実装方法がどのように異なるのでしょうか。


10
FWIW:これは確かにしながら、可能性がスーパーユーザー話題も、さらにとして意図されている可能性があり、ややエンドユーザーに焦点を当て、もともと尋ねられたとき、この時点では、両方の回答されており、プログラマーやウェブ開発者が参照すると、おそらく、ここのままにしてください。SUには、これ以外にもエンドユーザー指向のバージョンがいくつかあり、必要ありません...
Shog9

回答:


313

一般的に言って:

F5キャッシュからページをロードする可能性があるため、コンテンツが変更されても同じページが表示される場合があります。ただし、Ctrl- F5キャッシュを強制的に更新し、コンテンツが変更された場合に新しいコンテンツを取得することを保証します。


86
これは正確ですが、Ctrl + F5を押すとブラウザがキャッシュを破棄してサーバーから新しいリクエストを送信しますが、サーバーはキャッシュなしヘッダーを無視してサーバー側のキャッシュページを提供する場合があります。したがって、サーバーがno-cacheヘッダーを無視した場合、Ctrl + F5でも古いバージョンのページを返すことがあります。
AaronLS 2012

F5はページを更新します-CTRL + F5は「ハード」更新を行います。
Dimitri

また、Ctrl-F5キーを押すと、フォームが送信されます。
jawo 2015

さて、ctrl + f5を押した場合、ブラウザにキャッシュを使用しないように指示しますが、同じページへの後続のリクエストではどうなりますか?つまり、最も古いバージョンを表示した後で、ページの古いバージョンを表示できますか?ページがキャッシュされているためにバージョン1が表示されているが、すでにバージョン2が利用できる場合、ctrl + f5を押すとバージョン2が表示されることを理解しています。次に、ブラウザーを閉じてそのページを再度開きます。バージョン1が表示されますか、それともバージョン2が表示されますか?ありがとう。
モレラス2017年

525

それはブラウザ次第ですが、それらは同じように動作します。

FF、IE7、Opera、Chromeをテストしました。

F5通常は、ページが変更された場合にのみページを更新します。ブラウザは通常、すべてのタイプのキャッシュをできるだけ使用しようとし、リクエストに「If-modified-since」ヘッダーを追加します。Operaは "Cache-Control:no-cache"を送信することで異なります。

CTRL- F5キャッシュを無視して強制的に更新します。IE7は、FFと同様に「Cache-Control:no-cache」を追加し、FFは「Pragma:no-cache」も追加します。Chromeは通常の「If-modified-since」を実行し、Operaはキーを無視します。

私が正しく覚えているのは、CTRL- を押したときに「プラグマ:キャッシュなし」を追加してキャッシュ制御のサポートを追加した最初のブラウザーであるNetscapeでしたF5

編集:表を更新

下の表は、ブラウザーの更新ボタンがクリックされたときに何が起こるか(Joel Coehoornによるリクエストの後)と「max-age = 0」のCache-control-header に関する情報で更新されています。

2010年9月27日更新の表

┌────────────┬───────────────────────────────────────────────┐
│  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│- │                                │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘

テストされたバージョン:

  • Firefox 3.1.6および3.0.6(WINXP)
  • MSIE 8.0.6001および7.0.5730.11(WINXP)
  • Chrome 6.0.472.63および1.0.151.48(WINXP)
  • Opera 10.62および9.61(WINXP)

ノート:

  1. バージョン3.0.6はIとCを送信しますが、3.1.6は新しいタブでページを開き、「I」のみの通常の要求を行います。

  2. バージョン10.62は何もしません。9.61は、私の古いテーブルのタイプミスでない限り、Cを実行する可能性があります。

Chrome 6.0.472に関する注意:強制リロード(CTRL-などF5)を実行すると、URLが常に強制リロードを実行するように内部的にマークされているように動作します。アドレスバーに移動してEnterキーを押すと、フラグがクリアされます。


5
@Joel Coehoorn:更新ボタンをクリックしてテーブルを更新しました。ASCIIグラフィックテーブルが好きになりましたね。色分けは、コードの色分けの副作用にすぎません。
いくつかの

11
適切なHTMLテーブルとしてそれを行うことはできませんか?
John Topley、

13
参考までに-この回答は実際にはchrome開発/バグ追跡ボードで参照されています:code.google.com/p/chromium/issues/detail?id
Kip

18
@John Topley:テーブルは許可されていないので、答えはノーです。
いくつかの

1
このテーブルでのすばらしい作業-これはquirksmodeに属しています。+1。変動は、ヘッダーがリフレッシュページ内のリソースを要求するために使用されているものの中にもあります場合、私は...などなど、画像、スタイルシート、など、疑問に思う
ジェームズ・ハート

68

ブラウザーの更新動作をテストするためにクロスブラウザー互換ページを実装し(ここにソースコードあります)、@ someと同様の結果を取得しますが、最新のブラウザーの場合:

ここに画像の説明を入力してください


あなたのページのリンクは壊れています、私は答えのリンクを修正しましたが、そのページからのリンクの多くは壊れています。podlipensky.com/examples/refreshbutton/index.html、podlipensky.com / post
Juan Mendes

申し訳ありませんが、それについて-ブログの移行を行っています。リンクはできるだけ早く修正されます-githubリポジトリにアクセスしてサンプルをダウンロードしてください。
Pavel Podlipensky 2012年

リンクはまだ壊れています。移行は完了していませんか?
バーナード、2015年

ブラウザーの最新バージョン、特にモバイルおよびデスクトップのSafari、@ PavelPodlipenskyで回答を更新していただけますか?
Greg Dubicki、2015

9

少なくともFirefox(v3.5)では、キャッシュは単にクリアされるのではなく、無効になっているようです。ページ上に同じ画像の複数のインスタンスがある場合、それは複数回転送されます。これは、imgAjax / JavaScriptを介して後で追加されるタグにも当てはまります。

したがって、ブラウザが自動リフレッシュAjaxサイトで同じ小さなアイコンを数百回ダウンロードし続けるのはなぜかと不思議に思っている場合は、最初にCTRL- を使用してページをロードしたためですF5


3

IE7 / 8/9は、ページにフォーカスがあるかどうかによって動作が異なります。

ページをクリックしてCTRL+ をクリックするとF5、リクエストヘッダーに「Cache-Control:no-cache」が含まれます。ロケーション/アドレスバーをクリックした場合、CTRL+ を押しF5ません。


1

ユーザーが押すとF5、新しいリクエストがWebサーバーに送信され、リクエストに対する応答も取得されます。ただし、応答ヘッダーが解析されると、ブラウザーのキャッシュで必要な情報が確認されます。キャッシュ内の必要な情報の有効期限が切れていない場合、その情報はキャッシュ自体から復元されます。

ユーザーがクリックしたとき CTRL - F5でも、新しい要求がWebサーバーに行くとresponceを取得します。しかし、今度は応答ヘッダーが解析されると、キャッシュ内の必要な情報はチェックされず、更新されたすべての情報がサーバーからのみ取得されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.