首页 > 解决方案 > 在 CDN 和 aws s3 对象上设置缓存标头有什么区别?

问题描述

我试图弄清楚如何在不逐个清除的情况下清除一组 url(这是低效且有问题的)。

我还试图弄清楚如何在不清除我们不想清除的内容的情况下做到这一点。

本质上,当我将更新的文件推送到我的 CDN 指向的 s3 存储桶时,我想清除所有已更改的文件——但不清除保持不变的文件。

我试图弄清楚在 CDN 上设置缓存标头与设置缓存标头之间的区别(x-amz-meta-surrogate-key我认为具体是什么?)。

我能否以某种方式为更改的对象配置元数据(当我将它们推送到 s3 存储桶时),以便清除这些文件而不是其他文件?

(对于它的价值,我正在快速使用 CDN 服务)。

标签: amazon-web-servicesamazon-s3cachingcdnfastly

解决方案


我试图弄清楚如何在不逐个清除的情况下清除一组网址

这通常通过Surrogate-Key在源的响应上设置 a 来完成。您可以在多个不同页面上设置相同的“密钥”,以支持从一个清除请求中同时清除所有这些内容。

例如:您可以在www.example.com/abc发送Surrogate-Key: red bluewww.example.com/xyz发送Surrogate-Key: green yellow red

因此,使用 Fastly,您可以发出“按密钥清除”请求,这意味着您可以/abc使用blue密钥清除页面,因为它是该页面独有的(尽管在这种情况下您也可以只“按 url 清除”),但您可以清除两者/abc/xyz使用密钥发出“按密钥清除”请求,red因为该密钥已在两个页面的响应中设置。

至于将它与 AWS S3 耦合,有一个 Fastly 文档页面可能会有所帮助......

您可以使用代理键标记内容,并使用它一次清除特定 URL 组,而无需清除所有内容或单独清除每个 URL。在 Amazon S3 端,您可以使用 x-amz-meta-surrogate-key 标头来标记您认为合适的内容,然后在 Fastly 端设置 Header 配置以将 S3 信息转换为我们查看的标头为了。-- https://docs.fastly.com/en/guides/setting-surrogate-key-headers-for-amazon-s3-origins

其他一些可能对您有所帮助的 Fastly 材料:


推荐阅读