どのような行動の基準はありますか F5 そして Ctrl + F5 Webブラウザで起動する?
私はかつてIE6とFirefox 2.xで実験をしました。の F5 refreshは、If-Modified-Since
ヘッダーを使用してサーバーに送信されたHTTP要求をトリガーします。 Ctrl + F5 そのようなヘッダーはありません。私の理解では、 F5 キャッシュされたコンテンツをできるだけ利用しようとしますが、 Ctrl + F5 キャッシュされたすべてのコンテンツを破棄し、サーバーからすべてのコンテンツを再度取得することを目的としています。
しかし、今日、私は気づいたのですが、最近のブラウザ(Chrome、IE8)の中には、このように動作しないものもあります。両方 F5 そして Ctrl + F5 If-Modified-Since
ヘッダーを送信してください。
では、これはどのように機能するのでしょうか。それとも(標準がない場合)主要ブラウザは、これらのリフレッシュ機能をどのように実装するのかという点でどう違いますか?
一般的に言えば:
F5 コンテンツが変更されても、キャッシュからページが読み込まれる可能性があるため、同じページが表示されることがあります。しかし Ctrl - F5 キャッシュの更新を強制し、内容が変更された場合に新しい内容を取得することを保証します。
それはブラウザ次第ですが、それらは同じように振る舞います。
私はFF、IE7、OperaそしてChromeをテストしました。
F5 通常、ページが変更された場合にのみページを更新します。ブラウザは通常すべてのタイプのキャッシュをできるだけ使用しようとし、リクエストに "If-modified-since"ヘッダを追加します。 Operaは "Cache-Control:no-cache"を送信することで異なります。
CTRL - F5 キャッシュを無視して、更新を強制するために使用されます。 IE 7では、FFと同様に、 "Cache-Control:no-cache"が追加され、 "Pragma:no-cache"も追加されています。 Chromeは通常の「If-modified-since」を実行し、Operaはそのキーを無視します。
正しく覚えていれば、Netscapeを押したときに "Pragma:No-cache"を追加してキャッシュ制御のサポートを追加した最初のブラウザでした。 CTRL - 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│- │ │
└────────────┴──┴──┴──┴──┴──┴────────────────────────────────┘
テストしたバージョン
ノート:
バージョン3.0.6はIとCを送るが、3.1.6は新しいタブでページを開き、 "I"だけで通常のリクエストを行う。
バージョン10.62は何もしません。それが私の古いテーブルの誤字でない限り9.61はCをするかもしれない。
Chrome 6.0.472についてのメモ:強制リロードをした場合(のように) CTRL - F5)URLは内部で強制的なリロードを行うようにマークされているように動作します。アドレスバーに移動してEnterキーを押すと、フラグはクリアされます。
ブラウザの更新動作をテストするために - クロスブラウザ互換ページを実装しました - /そして@someに似た結果を得ますが、最近のブラウザでは:
少なくともFirefox(v3.5)では、キャッシュは単純にクリアされるのではなく無効のように見えます。 1ページに同じ画像のインスタンスが複数ある場合は、複数回転送されます。これは、Ajax/JavaScriptを介して後で追加されるimg
タグの場合も同様です。
それで、あなたがブラウザがあなたの自動更新Ajaxサイトで同じ小さなアイコンを何百回もダウンロードし続けるのか疑問に思うのであれば、それはあなたが最初にページをロードしたからです CTRL - F5。
IE7/8/9は、ページにフォーカスがあるかどうかによって動作が異なります。
ページをクリックして CTRL+F5 そして、 "Cache-Control:no-cache"がリクエストヘッダに含まれます。 Location/Addressバーをクリックしたら、を押します。 CTRL+F5 そうではありません。
ユーザーが押したとき F5 新しいリクエストはWebサーバーに送信され、リクエストに対する応答も取得します。しかし、応答ヘッダが解析されると、ブラウザキャッシュ内の必要な情報がチェックされます。キャッシュ内の必要な情報が期限切れになっていない場合、その情報はキャッシュ自体から復元されます。
ユーザーがクリックしたとき CTRL - F5 それでも、新しい要求はWebサーバーに送信され、応答があります。しかし、今度は応答ヘッダが解析されると、キャッシュ内の必要な情報はチェックされず、更新されたすべての情報がサーバからのみ取得されます。