わかった。同じタブで同じURIに別のリクエストを行った直後にリクエストを行った場合(更新ボタンをクリックするか、キーを押すか、 +を押す)、 GoogleChromeはCache-Control
orヘッダーを無視します。おそらく、ユーザーが本当にやりたいことを推測するアルゴリズムがあります。Expires
F5CommandR
ヘッダーをテストする方法Cache-Control
は、それ自体へのリンクを含むHTMLドキュメントを返すことです。リンクをクリックすると、Chromeはキャッシュからドキュメントを提供します。たとえば、次のドキュメントにself.htmlという名前を付けます。
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Test Page</title>
</head>
<body>
<p>
<a href="self.html">Link to the same page.</a>
If correctly cached, a request should not be made
when clicking the link.
</p>
</body>
</html>
別のオプションは、URLをコピーして、同じタブまたは別のタブに貼り付けることです。
更新:2017年1月26日に公開されたChromeの投稿で、以前の動作と、サブリソースではなくメインリソースの再検証のみを行うことでどのように変化するかが説明されています:
ユーザーは通常、ページが壊れているか、コンテンツが古くなっているように見えるためにリロードします。既存のリロード動作は通常、壊れたページを解決しますが、特にモバイルでは、古いコンテンツは通常のリロードによって非効率的に対処されます。この機能は元々、壊れたページが非常に一般的だった時代に設計されたため、両方のユースケースに同時に対処することは合理的でした。ただし、Webページの品質が向上するにつれて、この当初の懸念は今でははるかに関連性が低くなっています。古いコンテンツのユースケースを改善するために、Chromeでは、メインリソースのみを検証し、通常のページの読み込みを続行するように、再読み込みの動作が簡素化されました。この新しい動作により、キャッシュされたリソースの再利用が最大化され、レイテンシ、消費電力、およびデータ使用量が削減されます。
同じく2017年1月26日に公開されたFacebookの投稿では、POSTリクエスト後にChromeがキャッシュされたすべてのリソースを無効にするコードが見つかったと述べられています。
Chromeは、POSTリクエストの作成から読み込まれたページ上のすべてのリソースを再検証することがわかりました。Chromeチームによると、POSTリクエストは、購入やメールの送信など、変更を加えるページである傾向があり、ユーザーは最新のページを希望するという理由があります。
これはもうそうではないようです。
最後に、FirefoxがCache-Control: immutable
リソースの再検証を完全に停止するために導入していることが説明されています。
Firefoxは、このリソースを再検証してはならないことをブラウザに通知するために、一部のリソースに新しいキャッシュ制御ヘッダーを追加するというエンジニアの提案を実装しました。このヘッダーの背後にある考え方は、このリソースが最大使用期間中に変更されないことを開発者からブラウザーに約束することです。Firefoxは、このディレクティブをcache-control:不変ヘッダーの形式で実装することを選択しました。
これがリロードの謎を解くのに役立つことを願っています。