public class CacheControl
extends java.lang.Object
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 バリデーターに沿って記述する必要があります。
修飾子 | コンストラクターと説明 |
---|---|
protected | CacheControl() 空の CacheControl インスタンスを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
CacheControl | cachePrivate() "private" ディレクティブを追加します。 |
CacheControl | cachePublic() "public" ディレクティブを追加します。 |
static CacheControl | empty() 空のディレクティブを返します。 |
java.lang.String | getHeaderValue() "Cache-Control" ヘッダー値を返します。 |
static CacheControl | maxAge(long maxAge, java.util.concurrent.TimeUnit unit) "max-age =" ディレクティブを追加します。 |
CacheControl | mustRevalidate() "must-revalidate" ディレクティブを追加します。 |
static CacheControl | noCache() "no-cache" ディレクティブを追加します。 |
static CacheControl | noStore() "no-store" ディレクティブを追加します。 |
CacheControl | noTransform() "no-transform" ディレクティブを追加します。 |
CacheControl | proxyRevalidate() "proxy-revalidate" ディレクティブを追加します。 |
CacheControl | sMaxAge(long sMaxAge, java.util.concurrent.TimeUnit unit) "s-maxage" ディレクティブを追加します。 |
CacheControl | staleIfError(long staleIfError, java.util.concurrent.TimeUnit unit) "stale-if-error" ディレクティブを追加します。 |
CacheControl | staleWhileRevalidate(long staleWhileRevalidate, java.util.concurrent.TimeUnit unit) "stale-while-revalidate" ディレクティブを追加します。 |
protected CacheControl()
empty()
public static CacheControl empty()
これは、"max-age"、"no-cache"、"no-store" なしで他のオプションのディレクティブを使用するのに適しています。
this
、メソッドの連鎖を容易にする public static CacheControl maxAge(long maxAge, java.util.concurrent.TimeUnit unit)
このディレクティブは、設定された時間内にリソースが変更されないことを知っているため、リソースをパブリックにキャッシュするのに適しています。共有キャッシュによってリソースをキャッシュ(cachePrivate()
)または変換(noTransform()
)しない場合に備えて、追加のディレクティブを使用することもできます。
キャッシュされたレスポンスが古くなっても(つまり、"max-age" の遅延が渡されても)キャッシュが再利用しないようにするには、"must-revalidate" ディレクティブを設定する必要があります(mustRevalidate()
maxAge
- レスポンスがキャッシュされる最大時間 unit
- maxAge
引数の時間単位 this
、メソッドの連鎖を容易にする public static CacheControl noCache()
このディレクティブは、クライアントがサーバーでレスポンスを再検証した場合にのみレスポンスを再利用できることをキャッシュに伝えるのに適しています。このディレクティブはキャッシュを完全に無効にするわけではなく、クライアントが条件付きリクエスト("ETag"、"If-Modified-Since" ヘッダー付き)を送信し、サーバーが "304-Not Modified" ステータスでレスポンスする可能性があります。
キャッシュを無効にし、リクエスト / レスポンスの交換を最小限に抑えるには、noCache()
の代わりに noStore()
ディレクティブを使用する必要があります。
this
、メソッドの連鎖を容易にする public static CacheControl noStore()
このディレクティブは、キャッシュ(ブラウザーとプロキシ)がレスポンスのコンテンツをキャッシュしないようにするのに適しています。
this
、メソッドの連鎖を容易にする public CacheControl mustRevalidate()
このディレクティブは、古くなったら、キャッシュがレスポンスを使用して、元のサーバーでの検証に成功せずに後続のリクエストを満たすことはできないことを示します。
this
、メソッドの連鎖を容易にする public CacheControl noTransform()
このディレクティブは、仲介者(キャッシュなど)がレスポンスコンテンツを変換しないことを示します。これは、キャッシュと CDN がレスポンスコンテンツを自動的に gzip したり最適化したりしないようにできます。
this
、メソッドの連鎖を容易にする public CacheControl cachePublic()
このディレクティブは、レスポンスが通常はキャッシュ不可またはプライベートキャッシュ内でのみキャッシュ可能であっても、キャッシュがレスポンスを格納できることを示します。
this
、メソッドの連鎖を容易にする public CacheControl cachePrivate()
このディレクティブは、レスポンスメッセージが単一のユーザーを対象としており、共有キャッシュによって格納されてはならないことを示します。
this
、メソッドの連鎖を容易にする public CacheControl proxyRevalidate()
このディレクティブは、プライベートキャッシュ(つまり、ブラウザー、HTTP クライアント)には適用されないことを除いて、「必須の修正」ディレクティブと同じ意味です。
this
、メソッドの連鎖を容易にする public CacheControl sMaxAge(long sMaxAge, java.util.concurrent.TimeUnit unit)
このディレクティブは、共有キャッシュ内で、このディレクティブによって指定された最大存続期間が他のディレクティブによって指定された最大存続期間をオーバーライドすることを示します。
sMaxAge
- レスポンスがキャッシュされる最大時間 unit
- sMaxAge
引数の時間単位 this
、メソッドの連鎖を容易にする public CacheControl staleWhileRevalidate(long staleWhileRevalidate, java.util.concurrent.TimeUnit unit)
このディレクティブは、キャッシュが、指定された秒数まで、古くなった後に表示されるレスポンスを提供できることを示します。この拡張機能が存在するためにキャッシュされたレスポンスが失効した場合、キャッシュは失効したレスポンスを提供しながら(つまり、ブロックせずに)それを再検証しようとする必要があります。
staleWhileRevalidate
- 再検証中にレスポンスが使用される最大時間 unit
- staleWhileRevalidate
引数の時間単位 this
、メソッドの連鎖を容易にする public CacheControl staleIfError(long staleIfError, java.util.concurrent.TimeUnit unit)
このディレクティブは、エラーが発生した場合、他の鮮度情報に関係なく、キャッシュされた古いレスポンスを使用してリクエストを満たすことができることを示します。
staleIfError
- エラーが発生したときにレスポンスが使用される最大時間 unit
- staleIfError
引数の時間単位 this
、メソッドの連鎖を容易にする public java.lang.String getHeaderValue()
null
、それ以外の場合はヘッダー値