【问题标题】:CloudFront customize object caching does not workCloudFront 自定义对象缓存不起作用
【发布时间】:2020-03-13 20:45:00
【问题描述】:

我已使用自定义源(无 S3)设置 CloudFront。自定义来源正在提供带有 cachecontorl 标头的文件:

 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=86400Cache-Control: max-age=30672000 但这没有改变?我在这里错过了什么?

更新:我读到:

您可以通过许多有趣的方式使用这些选项!例如,如果 您没有在源上设置任何缓存控制标头,您可以使用 用于指定边缘站点的缓存持续时间的默认 TTL。要么, 您可以完全覆盖由 origin 设置的缓存控制标头 将所有三个值(最小值、最大值和默认值)设置为相同 价值。

但是那段时间我的起源没有被检查?

【问题讨论】:

    标签: amazon-web-services caching amazon-cloudfront cdn cache-control


    【解决方案1】:

    您在 CloudFront 配置中定义的 TTL 对 CloudFront 来说是本地的,以了解您希望在 CloudFront 上缓存多长时间,但这并不意味着 CloudFront 将添加缓存控制标头。 CloudFront 不添加缓存控制标头,但如果标头是由源设置的,它会尊重标头。

    CloudFront Cache Control

    上面的链接有一个表格,如果源设置了缓存控制标头,并且如果设置了最小、最大、默认 TTL,它将为您提供有关 CloudFront 行为的信息。

    缓存控制标头应由 Origin 或使用 Lambda@edge 添加

    【讨论】:

      猜你喜欢
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2012-07-16
      • 2013-08-06
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多