我有一个 Amazon CloudFront 分发,它创建了一个“源”到我的 CDN。在我的行为中,我设置了最大 TTL、最小 TTL 和默认 TTL。但我的响应标头在被重定向的静态文件中没有返回 Cache-Control 标头。如何设置缓存控制?我需要这个来用于 Google 页面洞察。 文件以创建缓存控制 我的标头响应
您可以在CloudFront实例中添加Cache-Control头,而无需使用功能。 进入AWS控制台并导航至CloudFront实例 转到策略->响应标头并单击“在自定义策略下创建响应标头策略”。如果您有现有策略,请编辑它。 在下一个屏幕中,在自定义标题下添加Cache-Control头以及您想要的最大年龄值。如果您想要覆盖来源,则可以将此值设置为覆盖源。 现在,进入您的Distribution并导航到Behaviours选项卡。 在默认行为下,选择刚刚创建的响应标头策略。 现在您的所有响应都将包含您设置的缓存标头。
缓存控制 您可以在不使用函数的情况下为CloudFront实例添加缓存控制头。 https://docs.aws.amazon.com/zh_cn/AmazonCloudFront/latest/DeveloperGuide/adding-response-headers.html 进入 AWS 控制台并导航到 CloudFront 实例。 转到“行为”选项卡 选择默认行为,并选择编辑选项以编辑该行为 在那里,您可以看到“响应标头策略 - 可选”的选项 您可以利用现有的响应标头策略或创建新的策略 转到“策略 - 响应标头”,然后在自定义策略下单击“创建响应标头策略”。如果您已经有一个现有策略,请进行编辑。 在我的情况下,我已经有一个策略,所以我选择编辑该策略 转到“自定义标头 - 可选” 添加 Cache-Control 标头以及您想要的最大年龄值。如果需要,可以设置该值以覆盖源。 在默认行为下,在“响应标头策略”下选择您刚创建或编辑的策略。 该段内容为HTML代码,无法进行翻译,建议您提供需要翻译的文字内容。
正如James所提到的,CF设置中的MAX TTL、MIN TTL等定义了CloudFront分发和源端的缓存行为,也就是说,在检查源端之前CloudFront应该在Edge Locations中保留资产的时间长短。例如,如果您有一个S3存储桶作为源端,然后有一个CloudFront分发,通过设置MAX TTL、Min TTL等,您可以告诉CloudFront它应该多久检查更改(在这种情况下是S3)。您可以在AWS文档中了解更多信息:管理边缘缓存中内容保留时间的方式(过期)。在上面的示例中,您可以进入S3存储桶并设置Cache-Control。有关如何执行此操作的更多信息,请阅读此处。
你可以: 1. 配置源以在响应中添加Cache-Control头文件。 或者 2. 使用Lambda@edge (Viewer response,因为你只想将其用于Google页面洞察) 在响应中添加Cache-control头文件。 示例: https://github.com/jkrnak/serverless-lambda-at-edge/blob/master/handler.js 定义TTL不会添加任何Cache-Control头信息,它主要被用来考虑需要缓存多长时间。