CacheOverride()
The CacheOverride
constructor lets you configure the caching behavior of a Response
.
Normally, the HTTP Headers on a Response
would control how the Response
is cached,
but CacheOverride
can be set on a Request
, to define custom caching behavior.
Syntax
new CacheOverride(mode)
new CacheOverride(mode, init)
Note:
CacheOverride()
can only be constructed withnew
. Attempting to call it withoutnew
throws aTypeError
.
Parameters
mode
: string- Sets the cache override mode for a request
- If set to:
"none"
: Do not override the behavior specified in the origin response’s cache control headers."pass"
: Do not cache the response to this request, regardless of the origin response’s headers."override"
: Override particular cache control settings using theCacheOverride
object's settings.
init
: An Object which contains all the configuration options to apply to the newly created
CacheOverride
.pci
: boolean optional- Override the caching behavior of this request to enable or disable PCI/HIPAA-compliant non-volatile caching.
- By default, this is
false
, which means the request may not be PCI/HIPAA-compliant. Set it totrue
to enable compliant caching. - See the Fastly PCI-Compliant Caching and Delivery documentation for details.
surrogateKey
: string optional- Override the caching behavior of this request to include the given surrogate key, provided as a header value.
- See the Fastly surrogate keys guide for details.
swr
: number optional- Override the caching behavior of this request to use the given
stale-while-revalidate
time, in seconds
- Override the caching behavior of this request to use the given
ttl
: number optional- Override the caching behavior of this request to use the given Time to Live (TTL), in seconds.
Return value
A new CacheOverride
object.
Examples
In this example we override the cache for all the requests prefixed /static/ to have a long TTL (Time To Live), and the home page to have a short TTL and a long SWR (Stale While Revalidate).
/// <reference types="@fastly/js-compute" />
import { CacheOverride } from "fastly:cache-override";
// In this example we override the cache for all the requests prefixed /static/
// to have a long TTL (Time To Live), and the home page to have a short TTL and
// a long SWR (Stale While Revalidate).
async function app (event) {
const path = (new URL(event.request.url)).pathname;
let cacheOverride;
if (path == '/') {
cacheOverride = new CacheOverride('override', {ttl: 10, swr: 86_400});
} else if (path.startsWith('/static/')) {
cacheOverride = new CacheOverride('override', {ttl: 86_400});
} else {
cacheOverride = new CacheOverride('none')
}
return fetch(event.request.url, {
cacheOverride,
backend: 'origin_0'
});
}
addEventListener("fetch", event => event.respondWith(app(event)));