Cloudflare 工作人员:使用参数防止 URL 的 302(来自磁盘缓存)
Cloudflare workers: prevent 302 (from disk cache) for a URL with param
我有一个工作人员,当 URL 有这样一个特定的参数时,我想绕过缓存:
let wcApiParam = url.searchParams.get('wc-api');
//bypass cache if wc-api param is in the URL
if( wcApiParam != 'auth' ){
//force cache
response = await fetch( newRequest, { cf: { cacheTtl: 43200 } } );
} else {
//bypass cache
response = await fetch( newRequest, { cf: { cacheTtl: 0 } } );
}
我不确定我做错了什么,请求的响应总是 302 (from disk cache)
这导致我的网站出现错误,因为我需要避免缓存这些请求。我的工人可能出了什么问题?或者我的缓存设置有问题?
以下是完整回复:
看来问题是响应已缓存在浏览器的缓存中。该请求实际上根本没有击中 Cloudflare(因此您的 Worker 没有执行)。
浏览器缓存了响应,因为它有 Cache-Control: max-age=14400
。这告诉浏览器它可以将响应缓存 4 小时。您应该停止从您的来源发送此 header,或者您可以让您的 Worker 脚本从不应缓存在浏览器中的响应中删除 header,例如:
let response = await fetch(...);
// Copy the response so that headers can be modified.
response = new Response(response);
// Remove cache-control header.
response.headers.delete("Cache-Control");
我有一个工作人员,当 URL 有这样一个特定的参数时,我想绕过缓存:
let wcApiParam = url.searchParams.get('wc-api');
//bypass cache if wc-api param is in the URL
if( wcApiParam != 'auth' ){
//force cache
response = await fetch( newRequest, { cf: { cacheTtl: 43200 } } );
} else {
//bypass cache
response = await fetch( newRequest, { cf: { cacheTtl: 0 } } );
}
我不确定我做错了什么,请求的响应总是 302 (from disk cache)
这导致我的网站出现错误,因为我需要避免缓存这些请求。我的工人可能出了什么问题?或者我的缓存设置有问题?
以下是完整回复:
看来问题是响应已缓存在浏览器的缓存中。该请求实际上根本没有击中 Cloudflare(因此您的 Worker 没有执行)。
浏览器缓存了响应,因为它有 Cache-Control: max-age=14400
。这告诉浏览器它可以将响应缓存 4 小时。您应该停止从您的来源发送此 header,或者您可以让您的 Worker 脚本从不应缓存在浏览器中的响应中删除 header,例如:
let response = await fetch(...);
// Copy the response so that headers can be modified.
response = new Response(response);
// Remove cache-control header.
response.headers.delete("Cache-Control");