From f6321fc3249d83a0059ef47978ed101d3c75375f Mon Sep 17 00:00:00 2001 From: Travis Fischer Date: Wed, 2 Jun 2021 13:59:27 -0400 Subject: feat: import from notion2site repo --- src/fetch-cache.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/fetch-cache.js (limited to 'src/fetch-cache.js') diff --git a/src/fetch-cache.js b/src/fetch-cache.js new file mode 100644 index 0000000..3fb6830 --- /dev/null +++ b/src/fetch-cache.js @@ -0,0 +1,34 @@ +const cache = caches.default + +export async function fetchCache(opts) { + const { event, cacheKey, fetch: fetchResponse } = opts + + let response + + if (cacheKey) { + console.log('cacheKey', cacheKey.url) + response = await cache.match(cacheKey) + } + + if (!response) { + response = await fetchResponse() + response = new Response(response.body, response) + + if (cacheKey) { + if (response.headers.has('Cache-Control')) { + // cache will respect response headers + event.waitUntil( + cache.put(cacheKey, response.clone()).catch((err) => { + console.warn('cache put error', cacheKey, err) + }) + ) + } + + response.headers.set('cf-cache-status', 'MISS') + } else { + response.headers.set('cf-cache-status', 'BYPASS') + } + } + + return response +} -- cgit v1.2.3