YSlow は一般的に ETag を削除することを推奨していませんが、一部の環境では推奨しています。ETag を使用しない場合は、Last-Modified
代わりに使用する必要があります。
ETag
すでにキャッシュされていて期限切れの可能性があるリソースを再リクエストするときの条件付き GET リクエストLast-Modified
用です。
Cache-Control max-age
キャッシュされたアイテムが再確認せずに確実に有効である期間を定義するためのものです。(このルールによって有効期限が切れると、ブラウザは条件付き GET を行います ...)
だからあなたの場合:
- ブラウザはリソースを 1 年間キャッシュしています。その年には、このリソースのリクエストはまったく行われません。ローカル キャッシュから直接提供されます。(
Cache-Control
ヘッダー設定を使用します。)
- ブラウザーは、何かが変更されたかどうかを確認するために、1 年が経過した後に条件付き要求を行います。
HTTP 304
何も変更されていない場合、サーバーは空のボディで応答します。その場合、ブラウザは再送信の必要なく、キャッシュされたアイテムを引き続き使用します。(ETag
および/またはLast-Modified
ヘッダー設定を使用)
(ブラウザはあなたのデータを尊重する場合と尊重しない場合があります。たとえば、1 年が経過していない場合でも、ブラウザが条件付きリクエストを行う可能性があります。)
高度に最適化されたサイトの場合、Cache-Control
これははるかに重要です。なぜなら、faaaar future expire ヘッダーを設定し、リソースが変更された場合に備えてリソースの URL を変更するだけだからです。これにより、条件付きリクエストの使用が妨げられますが、Expires ヘッダーを定義するときに非常に積極的になることができ、リソースの新しいバージョンをすべての人に同時に提供することができます。これは、新しい URL のため、ブラウザのビューでは新しいリソースのように見えます。
Java には、サイト開発に悪影響を与えることなくこれらの概念やその他の概念を利用する、jawrと呼ばれるフレームワークが存在します。