这是我的情况:
我有一个在远程服务器上使用大量图像的 web 应用程序。我的 web 应用程序在 Cloudflare 后面,尽管托管图像的服务器不是……而且该服务器可能非常慢。每张图像有时可能需要大约 5 秒。
我想使用 Cloudflare 将请求代理到这个外部服务器,但也可以无限期地缓存它们,或者至少尽可能长地缓存它们。图像永远不会改变,所以我不介意它们有很长的缓存寿命。
这是我应该在工人中设置的东西吗?作为页面规则?或者只是不以这种方式使用 CLoudflare?
这是我的情况:
我有一个在远程服务器上使用大量图像的 web 应用程序。我的 web 应用程序在 Cloudflare 后面,尽管托管图像的服务器不是……而且该服务器可能非常慢。每张图像有时可能需要大约 5 秒。
我想使用 Cloudflare 将请求代理到这个外部服务器,但也可以无限期地缓存它们,或者至少尽可能长地缓存它们。图像永远不会改变,所以我不介意它们有很长的缓存寿命。
这是我应该在工人中设置的东西吗?作为页面规则?或者只是不以这种方式使用 CLoudflare?
如果您无法更改原始服务器标头,您可以尝试在您的工作人员中使用以下代码段:
fetch(event.request, { cf: { cacheTtl: 300 } })
根据文档:
此选项强制 Cloudflare 缓存此请求的响应,而不管响应中显示什么标头。这相当于设置了两个页面规则:“Edge Cache TTL”和“Cache Level”(对“Cache Everything”)。
我认为您通常只希望图像上有一个很长的缓存标头。就像是:
Cache-Control: public; max-age=31536000