gpt4 book ai didi

ruby-on-rails - 将 Cloudfront 设置为从不重新获取 Assets

转载 作者:行者123 更新时间:2023-12-04 18:49:05 24 4
gpt4 key购买 nike

我有 a Rails app使用 Cloudfront 作为其 CDN 和 sprocket 来压缩 Assets 并设置长 Cache-Control标题。

对 Assets 的第一个请求给了我这样的响应 header :

缓存控制:公共(public),最大年龄=31536000
连接:关闭
内容编码:gzip
内容类型:应用程序/javascript
电子标签:“892a3afb514e3c84646835f9ef101026”
最后修改时间:格林威治标准时间 2012 年 1 月 17 日星期二 16:05:17
服务器:瘦 1.2.11 代号 Bat-Shit Crazy
变化:接受编码
通过:1.0 c662f4e5a3bc7b224ce1bbecb0a23d82.cloudfront.net:11180 (CloudFront), 1.0 fc4797024fafe16fcc03e892c23f078d.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:bd2a89fb81bba2513f30d6940347693ef483defb4783da06d81b002af23545c39b9176b2c7cb144f,VF69FYlYU8ezzHQp7QkU2GvEQ8NmDqEwRX-Tawu7H63yNqE1gl==
X-Cache:来自云端的小姐
X-运行时:0.012413
X-Ua 兼容:IE=Edge,chrome=1

完美的。它错过了来自 Cloudfront 的缓存,从我的应用程序中获取它,所以从现在开始它应该从那里加载它。

现在......如果我刷新页面,我会得到这些响应标题:

连接:保持事件
服务器:瘦 1.2.11 代号 Bat-Shit Crazy
通过: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 从云端
X-运行时:0.006909
X-Ua 兼容:IE=Edge,chrome=1

看起来它击中了 Cloudfront。我得到一个 304 not modified .所以看起来我没有再次下载文件但是,我看到这个请求也被发送到我的源服务器。

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

最佳答案

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

在 Assets 中添加日期标题可以解决所有问题。

关于ruby-on-rails - 将 Cloudfront 设置为从不重新获取 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8935313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com