首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rack::Cache/Rack::Etag 304

Rack::Cache/Rack::Etag 304
EN

Stack Overflow用户
提问于 2013-10-02 14:58:38
回答 2查看 564关注 0票数 0

我使用Rack:Etag根据来自服务器的响应生成适当的etag值,对于开发,我使用Rack::Cache来验证我期望发生的缓存是否真的存在

但我有一个小小的困境:

我发送了一个请求并得到这些头文件

代码语言:javascript
复制
Age →0
Cache-Control →public, max-age=10
Connection →keep-alive
Content-Length →4895
Content-Type →application/json; charset=UTF-8
Date →Wed, 02 Oct 2013 06:55:42 GMT
ETag →"dd65de99f4ce58f9de42992c4e263e80"
Server →thin 1.5.1 codename Straight Razor
X-Content-Digest →0879e41b0d8e9b351f517dd46823095e0e99abd8
X-Rack-Cache →stale, invalid, store

如果我在11秒后用If-None-Match=dd65de99f4ce58f9de42992c4e263e80发送了一个新的请求,那么我希望得到一个304,但使用上面的头部总是得到200。

我错过了什么?

EN

回答 2

Stack Overflow用户

发布于 2013-10-02 15:13:07

会不会是因为max-age指令设置为10

当缓存响应中存在max-age缓存控制指令时,如果响应的当前寿命大于在对该资源发出新请求时提供的老化时间值(以秒为单位),则该响应是陈旧的。

不过,你已经知道了吗?就像你在11秒后尝试的那样!

票数 1
EN

Stack Overflow用户

发布于 2013-10-02 17:06:02

我认为解决方案是加载机架中间件,如下所示用于coorect链接

代码语言:javascript
复制
use Rack::Cache
use Rack::ConditionalGet
use Rack::ETag

还会发送If-None-Match with "“around hash,我认为这看起来非常脆弱

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19131503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档