【问题标题】:Cache every fetch request in a Cloudflare worker在 Cloudflare 工作器中缓存每个获取请求
【发布时间】:2021-09-03 14:16:06
【问题描述】:

我正在构建一个 cloudflare worker,我想缓存一个 fetch 请求至少 24 小时。这意味着如果我在 24 小时内两次发出相同的请求,则不应调用 fetch() 并使用缓存的响应。 我已经编写了这个脚本,但是每次都会调用远程网站 (unixtimestamp.com)。

addEventListener("fetch", event => {
  event.respondWith(handleRequest(event.request))
});

async function handleRequest(request) {

  const url = 'https://www.unixtimestamp.com/'
  let response = await fetch(url, {
        cf: {
            cacheTtlByStatus: { "200-299": 60*60*24, 404: -1, "500-599": -1 }
        }
    })

  return response
}

文档:https://developers.cloudflare.com/workers/examples/cache-using-fetch

【问题讨论】:

  • 如何将cacheEverything 选项设置为true
  • 只有状态为200时才需要缓存。无论如何,即使使用cacheEverything结果都是一样的
  • cacheEverything: true 只告诉缓存所有 URL 都应该被认为是可缓存的。否则,它假定只能缓存以某些文件扩展名结尾的 URL。所以你确实想要cacheEverythig: true。同时,cacheTtlByStatus 选项仅适用于企业客户。您是企业客户吗?如果是这样,您应该联系您在 Cloudflare 的 CSM,以获得有关完成这项工作的帮助。
  • 它仍然没有缓存“cacheEverything: true”
  • 您的工作人员是否托管在workers.dev 上?如果是,则没有缓存将有效。需要自定义域才能激活缓存。

标签: cloudflare cloudflare-workers


【解决方案1】:

我想知道在这种情况下页面规则是否比在您的情况下的工作人员更有效? (此外,根据您的计划,工作人员的通话次数可能会受到限制)

我在页面规则中做过一次(并且很容易配置),通过状态码选项缓存 TTL。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-29
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2017-11-22
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多