在 CDN 和 aws s3 对象上设置缓存标头有什么区别?

问题描述

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

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

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

我想弄清楚在 CDN 上设置缓存标头与设置缓存标头(我认为是 x-amz-meta-surrogate-key)之间的区别。

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

(就其价值而言,我正在快速使用 CDN 服务)。

解决方法

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

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

例如:您可以让www.example.com/abc发送Surrogate-Key: red blue,而www.example.com/xyz发送Surrogate-Key: green yellow red

因此,使用 Fastly,您可以发出“按键清除”请求,这意味着您可以使用 /abc 键清除 blue 页面,因为它对该页面是唯一的(尽管在这种情况下您也可能只是“按 url 清除”),但您可以通过使用密钥 /abc 发出“按密钥清除”请求来清除 /xyzred,因为该密钥设置在两个页面的响应。

就将其耦合到 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 材料:

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...