加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 设置Cloudfront永不重新获取资产

发布时间:2020-12-17 03:21:21 所属栏目:百科 来源:网络整理
导读:我有 a Rails app使用Cloudfront作为其CDN和sprockets来压缩资产并设置长的Cache-Control标头. 对资产的第一个请求给我响应头像这样: Cache-Control:public,max-age=31536000Connection:closeContent-Encoding:gzipContent-Type:application/javascriptEtag
我有 a Rails app使用Cloudfront作为其CDN和sprockets来压缩资产并设置长的Cache-Control标头.

对资产的第一个请求给我响应头像这样:

Cache-Control:public,max-age=31536000
Connection:close
Content-Encoding:gzip
Content-Type:application/javascript
Etag:"892a3afb514e3c84646835f9ef101026"
Last-Modified:Tue,17 Jan 2012 16:05:17 GMT
Server:thin 1.2.11 codename Bat-Shit Crazy
Vary:Accept-Encoding
Via:1.0 c662f4e5a3bc7b224ce1bbecb0a23d82.cloudfront.net:11180 (CloudFront),1.0 fc4797024fafe16fcc03e892c23f078d.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:bd2a89fb81bba2513f30d6940347693ef483defb4783da06d81b002af23545c39b9176b2c7cb144f,VF69FYlYU8ezzHQp7QkU2GvEQ8NmDqEwRX-wu7H63yNqE1ZlTaAq3g==
X-Cache:Miss from cloudfront
X-Runtime:0.012413
X-Ua-Compatible:IE=Edge,chrome=1

完善.它错过了Cloudfront的缓存,从我的应用程序中获取了缓存,因此它应该从现在开始加载它.

现在……如果我刷新页面,我会收到以下响应标题:

Connection:keep-alive
Server:thin 1.2.11 codename Bat-Shit Crazy
Via:1.0 86123d99569c9296c8605243e9a10621.cloudfront.net:11180 (CloudFront),1.0 de9fc23d505dae3d19973a98bfa1eba0.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:a7bf6ffb30c43d306835190d210aeb8ec794c1ff619ad7aaecbad220c1822fe165bda624ae8382e1,bcij_88KOAvLPSqEKDRSvOBjEj7atiKBCAjSbqc2cfdb-BHOTi--LA==
X-Cache:RefreshHit from cloudfront
X-Runtime:0.006909
X-Ua-Compatible:IE=Edge,chrome=1

看起来它打到了Cloudfront.我得到304未修改.所以我似乎并没有再次下载文件,但我发现这个请求也是我的源服务器.

为什么会这样? Cloudfront现在不应该始终缓存我的资产吗?我正在对我的资产进行版本控制,所以除了第一个请求之外,我真的绝不希望从服务器获取它.有什么办法可以强迫这种行为吗?

解决方法

结果是Cloudfront won’t respect the Cache-Control header if no Date header is set.

在资产中添加日期标题可修复所有内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读