[英]CloudFlare Worker Cache API Not Storing Fetch Results
我剛剛在這個簡單的工人身上花了一整天,但我無處可去。
我在 CloudFlare 站點上關注了緩存 API 示例,也瀏覽了 StackOverflow 的帖子,但我仍然無處可去。
這篇文章( Cloudflares Worker Cache API 有問題)看起來正是我所需要的,但它沒有幫助。
基本上,我試圖做的就是使用緩存 API 將某些頁面緩存一段時間。 我最終需要為每個國家/地區代碼做特定的緩存(這就是為什么我使用工作程序而不是頁面規則)但現在我試圖做的就是讓基本的緩存 API 作為測試工作。
這是代碼,它基本上與他們網站上的示例代碼相同
處理程序
export async function handleRequest(event: FetchEvent): Promise<Response> {
const { request } = event
const cacheUrl = new URL(request.url)
const cacheKey = new Request(cacheUrl.toString(), request)
const cache = caches.default
let response = await cache.match(cacheKey)
if (!response) {
console.log('NO CACHE MATCH')
// If not in cache, get it from origin
response = await fetch(request)
// Must use Response constructor to inherit all of response's fields
response = new Response(response.body, response)
response.headers.append('Cache-Control', 's-maxage=10')
event.waitUntil(cache.put(cacheKey, response.clone()))
}
return response
}
索引.ts
import { handleRequest } from './handler'
addEventListener('fetch', (event) => {
event.respondWith(handleRequest(event))
})
我知道您不能在 workers.dev 域中使用 Cache API,所以我已將 worker 部署到自定義域,因此它應該可以訪問 API。
我試過了
基本上,我只是緩存未命中,請求會傳遞到我的網絡服務器。 我可以看到控制台日志,一切都運行良好,只是從不緩存或從未找到緩存。
調試起來非常困難,而且這些方法幾乎沒有返回任何信息。 cache.put 不返回任何內容, cache.match 不返回任何內容。 他們也可能被嘲笑。
我使用 wrangler 來構建/發布,並且一切正常。
有人可以在這里提供幫助嗎?
我認為你的代碼看起來很簡單/有意義。 所以,對我來說,下一個可能性似乎是某種數據問題(例如,響應格式)。 某些標頭,例如Cache-Control
和特別是Set-Cookie
會影響它是否可以緩存 - https://developers.cloudflare.com/workers/runtime-apis/cache#headers
您能否驗證您的響應不包含使其無法緩存的內容? 如果您能夠分享完整的回復,或僅分享標題,那也會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.