繁体   English   中英

Cloudflare 工作人员:防止 302(来自磁盘缓存)带有参数的 URL

[英]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 小时。 您应该停止从源发送此标头,或者您可以让 Worker 脚本从不应缓存在浏览器中的响应中删除标头,例如:

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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM