4

www.google.comで現在使用されているロゴは次のとおりです。

http://www.google.com/images/logos/ps_logo2.png

HTTP応答は次のとおりです。

HTTP/1.1 200 OK
Content-Type: image/png
Last-Modified: Thu, 05 Aug 2010 22:54:44 GMT
Date: Fri, 25 Mar 2011 16:41:05 GMT
Expires: Fri, 25 Mar 2011 16:41:05 GMT
Cache-Control: private, max-age=31536000
X-Content-Type-Options: nosniff
Server: sffe
Content-Length: 26209
Age: 0
Via: 1.1 localhost.localdomain

Cache-Controlヘッダーには、1年間有効であると記載されています。しかしExpires、と同じDateです。つまり、すぐに古くなります。

なぜ違いがあるのですか?

4

2 に答える 2

3

Cache-Control は、任意の HTTP/1.1 キャッシュまたはクライアントで有効期限をオーバーライドします。

したがって、Google は HTTP/1.1 の画像をキャッシュしたいが、HTTP/1.0 の画像はまったくキャッシュしたくないと考えています。

なぜGoogleが気にするのかわかりません。古いクライアントでもロゴをキャッシュしたいと思うでしょう。

于 2011-03-25T17:10:10.417 に答える
0

その理由は、Google がユーザーに画像をキャッシュすることを望んでいるが、中間の共有キャッシュをキャッシュしないことを望んでいるためです (したがって、privateディレクティブ)。

多くの中間キャッシュ システムは時代遅れになり、新しい HTTP 機能 (キャッシュ制御ヘッダーとして) を無視する可能性があるため、このアプローチでは (expiresヘッダーを介して) リソースをキャッシュしません。両方を理解している残りのエージェントの場合、キャッシュ制御オーバーライドは期限切れヘッダーです。

これは、rfc2616 sec14.9.3で参照されている一般的な方法です。

オリジンサーバーは、その機能を理解していない古いキャッシュを含むネットワーク上で、「プライベート」ディレクティブなどの比較的新しい HTTP キャッシュ制御機能を使用したい場合があります。オリジン サーバーは、値が Date 値以下の Expires フィールドと新しい機能を組み合わせる必要があります。これにより、古いキャッシュが応答を不適切にキャッシュするのを防ぐことができます。

于 2015-12-19T12:06:55.730 に答える