修改内容后如何停止CloudFront显示旧的/缓存的内容?

时间:2019-02-26 13:35:56

标签: apache caching amazon-cloudfront

我为使用Amazon / AWS CloudFront的大型求职网站工作。

我是广告设计师,并为某些客户制作自定义广告。

比方说,我上传了一个名为 test.jpg 的标题图片,并将链接发送给客户端以供批准。然后,客户端要求进行修改,因此我修改了test.jpg并重新上传,覆盖了先前的版本(因此,相同的文件路径)。

我希望CloudFront注意到该文件已被修改,并可以提供新版本。

但是,实际上发生的是,旧版本显示在我的浏览器(Chrome)和客户端的浏览器中。

  • 如果我点击重新加载,它不会显示新版本。
  • 如果我点击“重装”,它不会显示新版本。
  • 如果我加载了Chrome开发者工具,请右键单击“重新加载”,然后选择“清空缓存和硬重新加载”,它不会显示新版本。

显示新版本的唯一方法是在私人窗口中打开它,或使用完全不同的浏览器。

最初使用哪种浏览器似乎并不重要。如果我是从Chrome,Firefox或Edge开始的,那么我会一直看到旧的test.jpg,直到我使用私有窗口或切换到其他浏览器为止。

我个人可以忍受这一点。但是,客户根本不理解“在专用窗口中尝试”的说明。结果是每周都有数十个我没有修改广告的投诉。我目前正在发送屏幕截图,以显示我的身份。

在修改内容后,我必须更改哪些(Apache?)设置以使CloudFront提供新版本的内容?


数据1-test.jpg的响应标头(首次上传)

Request URL: https://www.redacted.com/images/test.jpg
Request Method: GET
Status Code: 200 OK
Remote Address: 52.85.70.211:443
Referrer Policy: no-referrer-when-downgrade
Accept-Ranges: bytes
Cache-Control: max-age=3600, public
Connection: keep-alive
Content-Length: 128483
Content-Type: image/jpeg
Date: Tue, 26 Feb 2019 12:39:42 GMT
ETag: "1f5e3-582ba67eea3f0"
Last-Modified: Mon, 25 Feb 2019 16:26:42 GMT
Server: Apache/2.4.6 (CentOS) PHP/7.0.28
Strict-Transport-Security: max-age=86400; includeSubDomains
Via: 1.1 f165ce34daf8c0da182681179e863c24.cloudfront.net (CloudFront)
X-Amz-Cf-Id: ygg0SdiaCM0eGDvXXpbw8AGcGD5u0mMIrItTeh8jgfmvHrI4YgP_lQ==
X-Cache: Miss from cloudfront
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,en-GB;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: redacted
Host: www.redacted.com
If-Modified-Since: Mon, 25 Feb 2019 16:26:42 GMT
If-None-Match: "1f5e3-582ba67eea3f0"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36

数据2-修改 test.jpg(第二次上传)的响应标头

Request URL: https://www.redacted.com/images/test.jpg
Request Method: GET
Status Code: 304 Not Modified
Remote Address: 52.85.70.192:443
Referrer Policy: no-referrer-when-downgrade
Age: 269
Cache-Control: max-age=3600, public
Connection: keep-alive
Date: Tue, 26 Feb 2019 12:44:11 GMT
ETag: "1f5e3-582ba67eea3f0"
Server: Apache/2.4.6 (CentOS) PHP/7.0.28
Strict-Transport-Security: max-age=86400; includeSubDomains
Via: 1.1 8d6ec6531e86b6b4aca269514f4dbbe1.cloudfront.net (CloudFront)
X-Amz-Cf-Id: ITVX0Q5KEGtZTQj6qpZKX7CJYqfoEZF3ngujC1QFZ34vX9OI-1cubA==
X-Cache: Hit from cloudfront
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,en-GB;q=0.8
Cache-Control: max-age=0
Connection: keep-alive
Cookie: redacted
Host: www.redacted.com
If-Modified-Since: Mon, 25 Feb 2019 16:26:42 GMT
If-None-Match: "1f5e3-582ba67eea3f0"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36

2 个答案:

答案 0 :(得分:0)

您有几种选择:

无效

对于每个https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html#invalidation-specifying-objects-paths,您可以在对象上运行无效,例如/*.js,以删除所有JavaScript文件的缓存。或者,您可以使用/*使所有缓存无效。可以通过查看分发,然后选择“无效”选项卡来管理无效。

行为

如果您拥有经常更改的已知文件(例如.css或.js文件),则可以在查看分发时选择“行为”标签,并选择与所需文件相匹配的路径模式,例如*.js。对于对象缓存选项,选择自定义并将所有TTL设置为0。

答案 1 :(得分:0)

第一步,从控制台打开Cloudfront: 现在:我们在Pic上显示 First Picture

选择无效

Second Picture

提及要失效的模式:全部(/ *或特定模式/*.js) 但并非无效不是免费的(收费) Third PIcture