クラス CacheControl
HTTP レスポンスに Cache-Control ディレクティブを追加すると、Web アプリケーションとやり取りするときのクライアントエクスペリエンスを大幅に改善できます。このビルダーは、いくつかのユースケースを念頭に置いて、レスポンスディレクティブのみを使用して、説得力のある "Cache-Control" ヘッダーを作成します。
CacheControl cc = CacheControl.maxAge(1, TimeUnit.HOURS)
で HTTP レスポンスをキャッシュすると、Cache-Control: "max-age=3600"
になります。CacheControl cc = CacheControl.noStore()
でキャッシュを防止すると、Cache-Control: "no-store"
になります。CacheControl cc = CacheControl.maxAge(1, TimeUnit.HOURS).noTransform().cachePublic()
のような高度なケースはCache-Control: "max-age=3600, no-transform, public"
になります
効率的にするために、Cache-Control ヘッダーは、"Last-Modified" ヘッダーや "ETag" ヘッダーなどの HTTP バリデーターに沿って記述する必要があります。
- 導入:
- 4.2
- 作成者:
- Brian Clozel, Juergen Hoeller
- 関連事項:
コンストラクターのサマリー
メソッドのサマリー
修飾子と型メソッド説明"private" ディレクティブを追加します。"public" ディレクティブを追加します。static CacheControl
empty()
空のディレクティブを返します。存在する場合、"Cache-Control" ヘッダー値を返します。「不変」ディレクティブを追加します。static CacheControl
maxAge
(long maxAge, TimeUnitSE unit) "max-age =" ディレクティブを追加します。static CacheControl
maxAge
(DurationSE maxAge) "max-age =" ディレクティブを追加します。"must-revalidate" ディレクティブを追加します。static CacheControl
noCache()
"no-cache" ディレクティブを追加します。static CacheControl
noStore()
"no-store" ディレクティブを追加します。"no-transform" ディレクティブを追加します。"proxy-revalidate" ディレクティブを追加します。sMaxAge
(long sMaxAge, TimeUnitSE unit) "s-maxage" ディレクティブを追加します。sMaxAge
(DurationSE sMaxAge) "s-maxage" ディレクティブを追加します。staleIfError
(long staleIfError, TimeUnitSE unit) "stale-if-error" ディレクティブを追加します。staleIfError
(DurationSE staleIfError) "stale-if-error" ディレクティブを追加します。staleWhileRevalidate
(long staleWhileRevalidate, TimeUnitSE unit) "stale-while-revalidate" ディレクティブを追加します。staleWhileRevalidate
(DurationSE staleWhileRevalidate) "stale-while-revalidate" ディレクティブを追加します。toString()
コンストラクターの詳細
CacheControl
protected CacheControl()空の CacheControl インスタンスを作成します。- 関連事項:
メソッドの詳細
empty
空のディレクティブを返します。これは、"max-age"、"no-cache"、"no-store" なしで他のオプションのディレクティブを使用するのに適しています。
- 戻り値:
this
、メソッドの連鎖を容易にする
maxAge
"max-age =" ディレクティブを追加します。このディレクティブは、設定された時間内にリソースが変更されないことを知っているため、リソースをパブリックにキャッシュするのに適しています。共有キャッシュによってリソースをキャッシュ(
cachePrivate()
)または変換(noTransform()
)しない場合に備えて、追加のディレクティブを使用することもできます。キャッシュされたレスポンスが古くなっても(つまり、"max-age" の遅延が渡されても)キャッシュが再利用しないようにするには、"must-revalidate" ディレクティブを設定する必要があります(
mustRevalidate()
- パラメーター:
maxAge
- レスポンスがキャッシュされる最大時間unit
-maxAge
引数の時間単位- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
maxAge
"max-age =" ディレクティブを追加します。このディレクティブは、設定された時間内にリソースが変更されないことを知っているため、リソースをパブリックにキャッシュするのに適しています。共有キャッシュによってリソースをキャッシュ(
cachePrivate()
)または変換(noTransform()
)しない場合に備えて、追加のディレクティブを使用することもできます。キャッシュされたレスポンスが古くなっても(つまり、"max-age" の遅延が渡されても)キャッシュが再利用しないようにするには、"must-revalidate" ディレクティブを設定する必要があります(
mustRevalidate()
- パラメーター:
maxAge
- レスポンスがキャッシュされる最大時間- 戻り値:
this
、メソッドの連鎖を容易にする- 導入:
- 5.2
- 関連事項:
noCache
"no-cache" ディレクティブを追加します。このディレクティブは、クライアントがサーバーでレスポンスを再検証した場合にのみレスポンスを再利用できることをキャッシュに伝えるのに適しています。このディレクティブはキャッシュを完全に無効にするわけではなく、クライアントが条件付きリクエスト("ETag"、"If-Modified-Since" ヘッダー付き)を送信し、サーバーが "304-Not Modified" ステータスでレスポンスする可能性があります。
キャッシングを無効にし、リクエスト / レスポンスの交換を最小限に抑えるには、
#noCache()
の代わりにnoStore()
ディレクティブを使用する必要があります。- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
noStore
"no-store" ディレクティブを追加します。このディレクティブは、キャッシュ(ブラウザーとプロキシ)がレスポンスのコンテンツをキャッシュしないようにするのに適しています。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
mustRevalidate
"must-revalidate" ディレクティブを追加します。このディレクティブは、古くなったら、キャッシュがレスポンスを使用して、元のサーバーでの検証に成功せずに後続のリクエストを満たすことはできないことを示します。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
noTransform
"no-transform" ディレクティブを追加します。このディレクティブは、仲介者(キャッシュなど)がレスポンスコンテンツを変換しないことを示します。これは、キャッシュと CDN がレスポンスコンテンツを自動的に gzip したり最適化したりしないようにできます。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
cachePublic
"public" ディレクティブを追加します。このディレクティブは、レスポンスが通常はキャッシュ不可またはプライベートキャッシュ内でのみキャッシュ可能であっても、キャッシュがレスポンスを格納できることを示します。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
cachePrivate
"private" ディレクティブを追加します。このディレクティブは、レスポンスメッセージが単一のユーザーを対象としており、共有キャッシュによって格納されてはならないことを示します。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
proxyRevalidate
"proxy-revalidate" ディレクティブを追加します。このディレクティブは、プライベートキャッシュ(つまり、ブラウザー、HTTP クライアント)には適用されないことを除いて、「必須の修正」ディレクティブと同じ意味です。
- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
sMaxAge
"s-maxage" ディレクティブを追加します。このディレクティブは、共有キャッシュ内で、このディレクティブによって指定された最大存続期間が他のディレクティブによって指定された最大存続期間をオーバーライドすることを示します。
- パラメーター:
sMaxAge
- レスポンスがキャッシュされる最大時間unit
-sMaxAge
引数の時間単位- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
sMaxAge
"s-maxage" ディレクティブを追加します。このディレクティブは、共有キャッシュ内で、このディレクティブによって指定された最大存続期間が他のディレクティブによって指定された最大存続期間をオーバーライドすることを示します。
- パラメーター:
sMaxAge
- レスポンスがキャッシュされる最大時間- 戻り値:
this
、メソッドの連鎖を容易にする- 導入:
- 5.2
- 関連事項:
staleWhileRevalidate
"stale-while-revalidate" ディレクティブを追加します。このディレクティブは、指定された秒数まで、キャッシュが古くなった後に表示されるレスポンスをキャッシュが提供できることを示します。この拡張機能が存在するためにキャッシュされたレスポンスが古い状態で提供される場合、キャッシュは古いレスポンスを提供しながら(つまり、ブロックせずに)再検証を試行する必要があります(SHOULD)。
- パラメーター:
staleWhileRevalidate
- 再検証中にレスポンスが使用される最大時間unit
-staleWhileRevalidate
引数の時間単位- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
staleWhileRevalidate
"stale-while-revalidate" ディレクティブを追加します。このディレクティブは、指定された秒数まで、キャッシュが古くなった後に表示されるレスポンスをキャッシュが提供できることを示します。この拡張機能が存在するためにキャッシュされたレスポンスが古い状態で提供される場合、キャッシュは古いレスポンスを提供しながら(つまり、ブロックせずに)再検証を試行する必要があります(SHOULD)。
- パラメーター:
staleWhileRevalidate
- 再検証中にレスポンスが使用される最大時間- 戻り値:
this
、メソッドの連鎖を容易にする- 導入:
- 5.2
- 関連事項:
staleIfError
"stale-if-error" ディレクティブを追加します。このディレクティブは、エラーが発生した場合、他の鮮度情報に関係なく、キャッシュされた古いレスポンスを使用してリクエストを満たすことができることを示します。
- パラメーター:
staleIfError
- エラーが発生したときにレスポンスが使用される最大時間unit
-staleIfError
引数の時間単位- 戻り値:
this
、メソッドの連鎖を容易にする- 関連事項:
staleIfError
"stale-if-error" ディレクティブを追加します。このディレクティブは、エラーが発生した場合、他の鮮度情報に関係なく、キャッシュされた古いレスポンスを使用してリクエストを満たすことができることを示します。
- パラメーター:
staleIfError
- エラーが発生したときにレスポンスが使用される最大時間- 戻り値:
this
、メソッドの連鎖を容易にする- 導入:
- 5.2
- 関連事項:
immutable
「不変」ディレクティブを追加します。このディレクティブは、オリジンサーバーがレスポンスの鮮度の有効期間中にそのリソースの表現を更新しないことを示します。実際の鮮度の有効期間を強制するために、
max-age
ディレクティブを追加することを強くお勧めします。- 戻り値:
this
、メソッドの連鎖を容易にする- 導入:
- 6.0.5
- 関連事項:
getHeaderValue
存在する場合、"Cache-Control" ヘッダー値を返します。- 戻り値:
- ヘッダー値、またはディレクティブが追加されなかった場合は
null
toString