10

我有一个亚马逊云端发行版,它为我的 CDN 创建了一个“来源”。在我的行为中,我设置了 Max TTL、Min TTL 和默认 TTL。但是我的响应标头不会返回重定向的静态文件中的 Cache-control 标头。如何设置缓存控制?我需要这个来获取谷歌页面洞察

创建缓存控制的文件

我的标题回复

4

3 回答 3

7

您可以在不使用函数的情况下将 Cache-Control 标头添加到 CloudFront 实例。

  • 转到 AWS 控制台并导航到 CloudFront 实例
  • 转到策略 -> 响应标头,然后单击自定义策略下的“创建响应标头策略”。如果您有现有策略,请对其进行编辑。
  • 在自定义标题下的下一个屏幕中,添加Cache-Control标题以及您想要的最大年龄值。如果需要,可以将此值设置为覆盖原点。
  • 现在转到您的分发并导航到行为选项卡。
  • 在您的默认行为中,在响应标头策略下选择您刚刚创建的那个。

在此处输入图像描述

您的所有响应现在都将包含您设置的缓存标头。

于 2021-12-10T06:14:29.363 回答
6

您可以: 1. 配置源以添加 Cache-Control 标头作为响应。或者 2. 使用 Lambda@edge(查看器响应,因为您只想将其用于谷歌页面洞察)在响应中添加缓存控制标头。示例: https ://github.com/jkrnak/serverless-lambda-at-edge/blob/master/handler.js

定义 TTL 不会添加任何缓存控制标头,它用于考虑需要缓存多长时间。

于 2019-05-17T14:16:51.457 回答
6

正如James所提到的,您在创建分配时在 CF 设置中看到的 MAX TTL、MIN TTL 等定义了 CloudFront 分配和源的缓存行为。换句话说,CloudFront 应在检查源之前将资产保留在边缘站点中多长时间。例如,如果您有一个 S3 存储桶作为源,然后是 CloudFront 分配,则通过设置 MAX TTL Min TTL 等,您可以告诉 CloudFront 它应该多久检查一次源(在本例中为 S3)以进行更改。您可以在 AWS Docs 中了解有关它的更多信息。管理内容在边缘缓存中的保留时间(过期)

在上面的示例中,您可以转到 S3 存储桶并设置Cache-Control. 有关如何操作的更多信息,请阅读此内容

于 2020-06-07T22:11:32.733 回答