3

一部のAmazonS3ファイルのブラウザキャッシュを設定したいのですが。このメタデータを使用する予定です。

Cache-Control: max-age=86400, must-revalidate

それは1日に相当します。

私が見る例の多くは次のようになります。

Cache-Control: max-age=3600

なぜ3600だけで、なぜ再検証を使用しないのですか?

私がめったに変更しないファイルの場合、どのくらいの期間キャッシュする必要がありますか?

ファイルを更新し、その更新をすぐに表示する必要があるが、そのキャッシュがさらに5日間期限切れにならない場合はどうなりますか?

4

1 に答える 1

2

なぜ3600だけなのか?

その特定の例の作成者が、1時間がそのページの適切なキャッシュタイムアウトであると判断したためと考えられます。


再検証が必要なものを使用してみませんか?

設定したキャッシュルールに従うために厳密に必要な情報が応答に含まれていない場合、must-revalidateを省略すると、理論上、さらにいくつかのリクエストがキャッシュを介して配信されるようになります。詳細については、この回答を参照してください。最も関連性の高い部分は、HTTP仕様からのものです。

キャッシュにクライアントの要求への応答として使用したい古いエントリがある場合、最初にオリジンサーバー(または場合によっては新しい応答を持つ中間キャッシュ)に、キャッシュされたエントリがまだ使用可能かどうかを確認する必要があります。


私がめったに変更しないファイルの場合、どのくらいの期間キャッシュする必要がありますか?

多くのWebパフォーマンスのアドバイスでは、数年など、将来のキャッシュの有効期限が非常に長くなると言われています。このように、クライアントブラウザはデータを1回だけダウンロードし、それ以降のアクセスはキャッシュから提供されます。これは、JavascriptやCSSなどの「真に静的な」ファイルに適しています。

一方、データが動的であるが頻繁に変更されない場合は、特定のシナリオに基づいて妥当な有効期限を設定する必要があります。最新バージョンが利用可能になり次第、顧客に提供する必要がありますか、それとも古いバージョンを提供しても大丈夫ですか?データがいつ変更されるか知っていますか?など。多くの場合、1時間または1日は、サーバーの負荷、クライアントのパフォーマンス、およびデータの鮮度の間の適切なトレードオフですが、要件によって異なります。


ファイルを更新し、その更新をすぐに表示する必要があるが、そのキャッシュがさらに5日間期限切れにならない場合はどうなりますか?

ファイルに新しい名前を付けるか、クエリ文字列に値を追加します。もちろん、すべてのリンクを更新する必要があります。これは、静的リソースを変更する必要がある場合の一般的なアプローチです。

また、ここでは、使用可能なキャッシュ制御属性の概要を示します。

于 2013-03-19T21:09:14.083 に答える