Skip to content
hero image

Changelog

New updates and improvements at Cloudflare. Subscribe to RSS

Bypass caching for subrequests made from Cloudflare Workers, with Request.cache

Nov 11, 2024, 02:00 PM

You can now use the cache property of the Request interface to bypass Cloudflare's cache when making subrequests from Cloudflare Workers, by setting its value to no-store.

index.js
export default {
async fetch(req, env, ctx) {
const request = new Request("https://cloudflare.com", {
cache: "no-store",
});
const response = await fetch(request);
return response;
},
};

When you set the value to no-store on a subrequest made from a Worker, the Cloudflare Workers runtime will not check whether a match exists in the cache, and not add the response to the cache, even if the response includes directives in the Cache-Control HTTP header that otherwise indicate that the response is cacheable.

This increases compatibility with NPM packages and JavaScript frameworks that rely on setting the cache property, which is a cross-platform standard part of the Request interface. Previously, if you set the cache property on Request, the Workers runtime threw an exception.

If you've tried to use @planetscale/database, redis-js, stytch-node, supabase, axiom-js or have seen the error message The cache field on RequestInitializerDict is not implemented in fetch — you should try again, making sure that the Compatibility Date of your Worker is set to on or after 2024-11-11, or the cache_option_enabled compatibility flag is enabled for your Worker.