CloudFront 自定义 object 缓存不起作用
CloudFront customize object caching does not work
我已经使用自定义来源(无 S3)设置了 CloudFront。自定义来源正在使用 cachecontorl headers:
提供文件
curl -I https://origin-site/assets/common.css?v=12345
HTTP/1.1 200 OK
Cache-Control: max-age=86400
我已将 CloudFront 配置为自定义 MinTTL、DefaultTTL 和 MaxTTL。
在 CloudFormation 中:
CacheBehaviors:
- TargetOriginId: !Sub 'xxx-${Environment}'
PathPattern: "assets/*"
ViewerProtocolPolicy: redirect-to-https
Compress: true
MinTTL: 0
DefaultTTL: 30672000
MaxTTL: 30672000
AllowedMethods:
- HEAD
- GET
- OPTIONS
CachedMethods:
- HEAD
- GET
- OPTIONS
ForwardedValues:
QueryString: true
Cookies:
Forward: none
现在我在控制台中看到了自定义设置和正确的值。我什至在它之后做了一个无效。
现在我通过 CDN 访问资产:
curl -I https://cdn-cloudfront-site/assets/common.css?v=12345
HTTP/1.1 200 Connection Established
Proxy-Agent: IWSS
Date: Mon, 18 Nov 2019 13:05:29 GMT
HTTP/1.1 200 OK
Content-Type: text/css
Content-Length: 104120
Connection: keep-alive
Cache-Control: max-age=86400
Last-Modified: Fri, 15 Nov 2019 10:15:38 GMT
Accept-Ranges: bytes
ETag: "0415ea09d9bd51:0"
Server: Microsoft-IIS/10.0
X-Content-Type-Options: nosniff
Access-Control-Allow-Origin: *
Date: Mon, 18 Nov 2019 13:05:30 GMT
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 b912dc97777020eb19579888add26978.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA50-C1
X-Amz-Cf-Id: 46wPzKf7v7A2vTbWQMRVZf2V8KCPdCtZSCdY9P82MtDLKJXe3TxskQ==
先失手,再命中,没关系。但是我想要Cache-Control: max-age=86400
as Cache-Control: max-age=30672000
但是这个是不是变了?我在这里错过了什么?
更新:我读到:
You can use these options in many interesting ways! For example, if
you don’t set any cache control header on your origin, you can use the
Default TTL to specify the cache duration for the edge locations. Or,
you can completely override the cache-control header set by origin by
setting all three of the values (Min, Max, and Default) to the same
value.
但是我的出身一直没有被检查?
您在 CloudFront 配置中定义的 TTL 对 CloudFront 来说是本地的,以了解您想在 CloudFront 上缓存多长时间,但这并不意味着 CloudFront 将添加 cache-control header . CloudFront 不添加 cache-control header,但如果 header 是由源设置的,它会尊重 header。
link 上方有一个 table,它将为您提供有关 CloudFront 在 origin 具有 cache-control header 设置以及最小值、最大值、默认值时的行为方式的信息已设置 TTL。
cache-control header 应由 Origin 或使用 Lambda@edge 添加
我已经使用自定义来源(无 S3)设置了 CloudFront。自定义来源正在使用 cachecontorl headers:
提供文件 curl -I https://origin-site/assets/common.css?v=12345
HTTP/1.1 200 OK
Cache-Control: max-age=86400
我已将 CloudFront 配置为自定义 MinTTL、DefaultTTL 和 MaxTTL。
在 CloudFormation 中:
CacheBehaviors:
- TargetOriginId: !Sub 'xxx-${Environment}'
PathPattern: "assets/*"
ViewerProtocolPolicy: redirect-to-https
Compress: true
MinTTL: 0
DefaultTTL: 30672000
MaxTTL: 30672000
AllowedMethods:
- HEAD
- GET
- OPTIONS
CachedMethods:
- HEAD
- GET
- OPTIONS
ForwardedValues:
QueryString: true
Cookies:
Forward: none
现在我在控制台中看到了自定义设置和正确的值。我什至在它之后做了一个无效。
现在我通过 CDN 访问资产:
curl -I https://cdn-cloudfront-site/assets/common.css?v=12345
HTTP/1.1 200 Connection Established
Proxy-Agent: IWSS
Date: Mon, 18 Nov 2019 13:05:29 GMT
HTTP/1.1 200 OK
Content-Type: text/css
Content-Length: 104120
Connection: keep-alive
Cache-Control: max-age=86400
Last-Modified: Fri, 15 Nov 2019 10:15:38 GMT
Accept-Ranges: bytes
ETag: "0415ea09d9bd51:0"
Server: Microsoft-IIS/10.0
X-Content-Type-Options: nosniff
Access-Control-Allow-Origin: *
Date: Mon, 18 Nov 2019 13:05:30 GMT
Vary: Accept-Encoding
X-Cache: Miss from cloudfront
Via: 1.1 b912dc97777020eb19579888add26978.cloudfront.net (CloudFront)
X-Amz-Cf-Pop: FRA50-C1
X-Amz-Cf-Id: 46wPzKf7v7A2vTbWQMRVZf2V8KCPdCtZSCdY9P82MtDLKJXe3TxskQ==
先失手,再命中,没关系。但是我想要Cache-Control: max-age=86400
as Cache-Control: max-age=30672000
但是这个是不是变了?我在这里错过了什么?
更新:我读到:
You can use these options in many interesting ways! For example, if you don’t set any cache control header on your origin, you can use the Default TTL to specify the cache duration for the edge locations. Or, you can completely override the cache-control header set by origin by setting all three of the values (Min, Max, and Default) to the same value.
但是我的出身一直没有被检查?
您在 CloudFront 配置中定义的 TTL 对 CloudFront 来说是本地的,以了解您想在 CloudFront 上缓存多长时间,但这并不意味着 CloudFront 将添加 cache-control header . CloudFront 不添加 cache-control header,但如果 header 是由源设置的,它会尊重 header。
link 上方有一个 table,它将为您提供有关 CloudFront 在 origin 具有 cache-control header 设置以及最小值、最大值、默认值时的行为方式的信息已设置 TTL。
cache-control header 应由 Origin 或使用 Lambda@edge 添加