The Cache API is available globally but the contents of the cache do not replicate outside of the originating data center. A GET /users response can be cached in the originating data center, but will not exist in another data center unless it has been explicitly created.
Workers deployed to custom domains have access to functional cache operations. So do Pages functions, whether attached to custom domains or *.pages.dev domains.
However, any Cache API operations in the Cloudflare Workers dashboard editor, Playground previews, and any *.workers.dev deployments will have no impact. For Workers fronted by Cloudflare Access ↗, the Cache API is not currently available.
Accessing Cache
The caches.default API is strongly influenced by the web browsers’ Cache API, but there are some important differences. For instance, Cloudflare Workers runtime exposes a single global cache object.
letcache=caches.default;
awaitcache.match(request);
You may create and manage additional Cache instances via the caches.open ↗ method.
letmyCache=awaitcaches.open('custom:cache');
awaitmyCache.match(request);
Headers
Our implementation of the Cache API respects the following HTTP headers on the response passed to put():
Cache-Control
Controls caching directives. This is consistent with Cloudflare Cache-Control Directives. Refer to Edge TTL for a list of HTTP response codes and their TTL when Cache-Control directives are not present.
Cache-Tag
Allows resource purging by tag(s) later (Enterprise only).
ETag
Allows cache.match() to evaluate conditional requests with If-None-Match.
Expires string
A string that specifies when the resource becomes invalid.
Last-Modified
Allows cache.match() to evaluate conditional requests with If-Modified-Since.
This differs from the web browser Cache API as they do not honor any headers on the request or response.
Methods
Put
cache.put(request,response);
put(request, response) : Promise
Attempts to add a response to the cache, using the given request as the key. Returns a promise that resolves to undefined regardless of whether the cache successfully stored the response.
Parameters
request string | Request
The string or Request object used as the lookup key. Strings are interpreted as the URL for a new Request object.
options object
Can contain one possible property: ignoreMethod (Boolean). Consider the request method a GET regardless of its actual value.