我使用Sinatra框架在Heroku上设置了我的ruby应用程序。 Web服务器是独角兽,当请求在memcached的缓存中找到它的内容时(通过Dalli gem),它会显示cache: [GET /] fresh
,因此它清楚地从缓存中检索内容。但是,当我检查标题时,响应代码总是200而不是304.我的印象是,当一个页面从缓存中提供时,它仍然是新鲜的,响应代码应该是304.
这是否按预期工作,我误解了什么?当Unicorn在缓存中找到某些内容时,它是否只提供304代码?我不应该担心这种事吗?
感谢任何指导。
答案 0 :(得分:2)
答案 1 :(得分:2)
Unicorn无法知道您的应用程序如何处理缓存。因此,它无法为您设置etags。
像Rajesh所说,304是关于浏览器缓存的。 您必须在应用程序中生成Etag哈希值,然后将其发送到浏览器(通过标题)。
根据这篇帖子,浏览器支持etags:Browser support for eTags etags。
以下是关于304的官方文档:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5
编辑: 看看这里用sinatra实现它:
http://www.sinatrarb.com/intro#Cache%20Control
http://opensoul.org/blog/archives/2011/01/29/etags-with-memcached/