ブラウザーのキャッシュから直接提供されると予想される静的リソース (画像、css ファイルなど) に対する予期しない要求を多数受信している Web サイトがあります。これはパフォーマンスの問題であり、なぜそれが起こっているのか理解できません。
静的リソースごとに、Web サイトはExpires
24 時間後のLast-Modified
ヘッダー、画像/css ファイルの変更日のヘッダー、および次の情報を返しますETag
。
Expires: Wed, 07 Dec 2011 13:50:47 GMT
Last-Modified: Thu, 14 Jul 2011 15:19:16 GMT
ETag: W/"4875-1310656756000"
これらの設定を使用すると、ブラウザーが初めて画像または css ファイルを要求した後、次のことが期待できます。
- さらに 24 時間はリソースを再要求しません。
- 24 時間後、リソースを再リクエストし、
If-Modified-Since
ヘッダーとヘッダーを渡します。If-None-Match
サーバーはステータスで応答し304
ます (サーバー側で何も変更されていないと仮定します)。
これは、ほとんどの場合に発生することです。
ただし、静的リソースがキャッシュされていないように見え、ページごとにリクエストされているブラウザー セッションがいくつか見られます。
これらのリクエストを見ると、If-Modified-Since
またはIf-None-Match
ヘッダーが受信されていません。200
その後、サーバーは毎回ステータスで応答し、要求されたリソースを返します。これは追跡したいパフォーマンスの問題です。
この問題は、ブラウザと Web サイトの間に HTTP プロキシ/キャッシュが存在することが原因であると思われます (問題のセッションは通常、企業のファイアウォールの背後から発生します)。もしそうなら、なぜプロキシがこのようにヘッダーに干渉するのExpires
か理解できません。Etag
Last-Modified
関連する場合のいくつかの追加情報:
Date
現在、ヘッダーを設定していません。Expires
/Last-Modified
ヘッダーが正しく機能するために必要ですか?- /で十分
Cache-Control
だと考えて、現在ヘッダーを設定していません。Expires
Last-Modified
- Web サイトは https と http の両方で展開されており、両方の展開で問題が発生しました。これでプロキシが原因でなくなると思っていましたが、一部のプロキシが SSL トラフィックをインターセプトすることがわかりました。
他の誰かが同様のことを経験し、なぜそれが起こるのかを知りましたか?