Adding Cache-Control directives to HTTP responses can significantly improve the client experience when interacting with a web application. This builder creates opinionated "Cache-Control" headers with response directives only, with several use cases in mind.
CacheControl cc = CacheControl.maxAge(1, TimeUnit.HOURS)
will result in Cache-Control: "max-age=3600"CacheControl cc = CacheControl.noStore()
will result in Cache-Control: "no-store"CacheControl cc = CacheControl.maxAge(1, TimeUnit.HOURS).noTransform().cachePublic()
will result in Cache-Control: "max-age=3600, no-transform, public"Note that to be efficient, Cache-Control headers should be written along HTTP validators such as "Last-Modified" or "ETag" headers.
| Modifier and Type | Field and Description |
|---|---|
| private boolean | |
| private boolean | |
| private boolean | |
| private Duration | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private boolean | |
| private Duration | |
| private Duration | |
| private Duration |
| Access | Constructor and Description |
|---|---|
| protected |
| Modifier and Type | Method and Description |
|---|---|
| private void | |
| public CacheControl | |
| public CacheControl | |
| public static CacheControl | |
| public String | Returns: the header value, ornull if no directive was addedReturn the "Cache-Control" header value, if any. |
| public CacheControl | |
| public static CacheControl | |
| public static CacheControl | |
| public CacheControl | |
| public static CacheControl | |
| public static CacheControl | |
| public CacheControl | |
| public CacheControl | |
| public CacheControl | |
| public CacheControl | |
| public CacheControl | Returns: this, to facilitate method chainingthe maximum time the response should be used when errors are encountered staleIfError, TimeUnit the time unit of the unit)staleIfError argumentAdd a "stale-if-error" directive. |
| public CacheControl | Returns: this, to facilitate method chainingthe maximum time the response should be used when errors are encountered staleIfError)Add a "stale-if-error" directive. |
| public CacheControl | Returns: this, to facilitate method chainingthe maximum time the response should be used while being revalidated staleWhileRevalidate, TimeUnit the time unit of the unit)staleWhileRevalidate argumentAdd a "stale-while-revalidate" directive. |
| public CacheControl | Returns: this, to facilitate method chainingthe maximum time the response should be used while being revalidated staleWhileRevalidate)Add a "stale-while-revalidate" directive. |
| private String | Returns: the header value (potentially empty)Return the "Cache-Control" header value. |
| public String |
| cachePrivate | back to summary |
|---|---|
| private boolean cachePrivate | |
| cachePublic | back to summary |
|---|---|
| private boolean cachePublic | |
| immutable | back to summary |
|---|---|
| private boolean immutable | |
| maxAge | back to summary |
|---|---|
| private Duration maxAge
| |
| mustRevalidate | back to summary |
|---|---|
| private boolean mustRevalidate | |
| noCache | back to summary |
|---|---|
| private boolean noCache | |
| noStore | back to summary |
|---|---|
| private boolean noStore | |
| noTransform | back to summary |
|---|---|
| private boolean noTransform | |
| proxyRevalidate | back to summary |
|---|---|
| private boolean proxyRevalidate | |
| sMaxAge | back to summary |
|---|---|
| private Duration sMaxAge
| |
| staleIfError | back to summary |
|---|---|
| private Duration staleIfError
| |
| staleWhileRevalidate | back to summary |
|---|---|
| private Duration staleWhileRevalidate
| |
| CacheControl | back to summary |
|---|---|
| protected CacheControl() Create an empty CacheControl instance.
| |
| appendDirective | back to summary |
|---|---|
| private void appendDirective(StringBuilder builder, String value) | |
| cachePrivate | back to summary |
|---|---|
| public CacheControl cachePrivate() Add a "private" directive. This directive indicates that the response message is intended for a single user and MUST NOT be stored by a shared cache.
| |
| cachePublic | back to summary |
|---|---|
| public CacheControl cachePublic() Add a "public" directive. This directive indicates that any cache MAY store the response, even if the response would normally be non-cacheable or cacheable only within a private cache.
| |
| empty | back to summary |
|---|---|
| public static CacheControl empty() Return an empty directive. This is well suited for using other optional directives without "max-age", "no-cache" or "no-store".
| |
| getHeaderValue | back to summary |
|---|---|
| public String getHeaderValue() Return the "Cache-Control" header value, if any. | |
| immutable | back to summary |
|---|---|
| public CacheControl immutable() Add an "immutable" directive. This directive indicates that the origin server will not update the
representation of that resource during the freshness lifetime of the response.
Adding a
| |
| maxAge | back to summary |
|---|---|
| public static CacheControl maxAge(long maxAge, TimeUnit unit) Add a "max-age=" directive. This directive is well suited for publicly caching resources, knowing that
they won't change within the configured amount of time. Additional directives
can be also used, in case resources shouldn't be cached ( In order to prevent caches to reuse the cached response even when it has
become stale (i.e. the "max-age" delay is passed), the "must-revalidate"
directive should be set (
| |
| maxAge | back to summary |
|---|---|
| public static CacheControl maxAge(Duration maxAge) Add a "max-age=" directive. This directive is well suited for publicly caching resources, knowing that
they won't change within the configured amount of time. Additional directives
can be also used, in case resources shouldn't be cached ( In order to prevent caches to reuse the cached response even when it has
become stale (i.e. the "max-age" delay is passed), the "must-revalidate"
directive should be set (
| |
| mustRevalidate | back to summary |
|---|---|
| public CacheControl mustRevalidate() Add a "must-revalidate" directive. This directive indicates that once it has become stale, a cache MUST NOT use the response to satisfy subsequent requests without successful validation on the origin server.
| |
| noCache | back to summary |
|---|---|
| public static CacheControl noCache() Add a "no-cache" directive. This directive is well suited for telling caches that the response can be reused only if the client revalidates it with the server. This directive won't disable cache altogether and may result with clients sending conditional requests (with "ETag", "If-Modified-Since" headers) and the server responding with "304 - Not Modified" status. In order to disable caching and minimize requests/responses exchanges,
the
| |
| noStore | back to summary |
|---|---|
| public static CacheControl noStore() Add a "no-store" directive. This directive is well suited for preventing caches (browsers and proxies) to cache the content of responses.
| |
| noTransform | back to summary |
|---|---|
| public CacheControl noTransform() Add a "no-transform" directive. This directive indicates that intermediaries (caches and others) should not transform the response content. This can be useful to force caches and CDNs not to automatically gzip or optimize the response content.
| |
| proxyRevalidate | back to summary |
|---|---|
| public CacheControl proxyRevalidate() Add a "proxy-revalidate" directive. This directive has the same meaning as the "must-revalidate" directive, except that it does not apply to private caches (i.e. browsers, HTTP clients).
| |
| sMaxAge | back to summary |
|---|---|
| public CacheControl sMaxAge(long sMaxAge, TimeUnit unit) Add an "s-maxage" directive. This directive indicates that, in shared caches, the maximum age specified by this directive overrides the maximum age specified by other directives.
| |
| sMaxAge | back to summary |
|---|---|
| public CacheControl sMaxAge(Duration sMaxAge) Add an "s-maxage" directive. This directive indicates that, in shared caches, the maximum age specified by this directive overrides the maximum age specified by other directives.
| |
| staleIfError | back to summary |
|---|---|
| public CacheControl staleIfError(long staleIfError, TimeUnit unit) Add a "stale-if-error" directive. This directive indicates that when an error is encountered, a cached stale response MAY be used to satisfy the request, regardless of other freshness information.
| |
| staleIfError | back to summary |
|---|---|
| public CacheControl staleIfError(Duration staleIfError) Add a "stale-if-error" directive. This directive indicates that when an error is encountered, a cached stale response MAY be used to satisfy the request, regardless of other freshness information.
| |
| staleWhileRevalidate | back to summary |
|---|---|
| public CacheControl staleWhileRevalidate(long staleWhileRevalidate, TimeUnit unit) Add a "stale-while-revalidate" directive. This directive indicates that caches MAY serve the response in which it appears after it becomes stale, up to the indicated number of seconds. If a cached response is served stale due to the presence of this extension, the cache SHOULD attempt to revalidate it while still serving stale responses (i.e. without blocking).
| |
| staleWhileRevalidate | back to summary |
|---|---|
| public CacheControl staleWhileRevalidate(Duration staleWhileRevalidate) Add a "stale-while-revalidate" directive. This directive indicates that caches MAY serve the response in which it appears after it becomes stale, up to the indicated number of seconds. If a cached response is served stale due to the presence of this extension, the cache SHOULD attempt to revalidate it while still serving stale responses (i.e. without blocking).
| |
| toHeaderValue | back to summary |
|---|---|
| private String toHeaderValue() Return the "Cache-Control" header value.
| |
| toString | back to summary |
|---|---|
| public String toString() Overrides java. Doc from java. Returns a string representation of the object.
Satisfying this method's contract implies a non- | |