Cache-Control header 未从 Cloudfront 自定义发送 Object 缓存

Cache-Control header not being sent from Cloudfront Custom Object Caching

我所有的资产都存储在 S3 上。

我在其上安装了 CloudFront。因此我在这个发行版上只有一个来源。

这是我的配置。

当我获得资产(在本例中为 css 文件)时,这里是返回的 headers。

Content-Type: text/css
Content-Length: 431206
Connection: keep-alive
Date: Tue, 30 Apr 2019 19:58:02 GMT
Last-Modified: Mon, 29 Apr 2019 19:19:06 GMT
ETag: "157d6f76c8edfc3329062f511be86149"
Accept-Ranges: bytes
Server: AmazonS3
Age: 12
Vary: Accept-Encoding
X-Cache: Hit from cloudfront
Via: 1.1 67c0f7cc5ebd46ca00c423ff8dac32d3.cloudfront.net (CloudFront)
X-Amz-Cf-Id: uqlSS3nsE_s2gfeN8XRaLWsrNoLJw7ap7Kuaqv92GbUVcXFKJD4dog==

我的预期是 Cache-Control header 会被设置,但显然不会返回。

您的期望不正确。

这些设置不会设置或修改 Cache-Control headers -- 它们只会调整 CloudFront 为每个 object.

的内部 TTL 采用的值

要在 object 上设置 Cache-Control,header 需要在 object 上传到 S3 时发送,或者可以在 CloudFront 中使用Lambda@Edge 触发器。

参见 No Cache-Control Header for files from AWS CloudFront with S3 Origin 服务器故障。

另请参阅 Stack Overflow 上的 What is Cloudfront Minimum TTL for? and Confused with minimum, maximum and default TTL in CloudFront