gpt4 book ai didi

ruby - 具有 unicorn 和 memcached 的 Sinatra 应用程序应该为缓存命中返回 304 代码吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:56:51 25 4
gpt4 key购买 nike

我使用 Sinatra 框架在 Heroku 上设置了我的 ruby​​ 应用程序。 Web 服务器是 unicorn ,当请求在 memcached 的缓存中找到其内容时(通过 Dalli gem),它会显示 cache: [GET/] fresh 所以它显然是从缓存中检索内容。但是,当我检查 header 时,响应代码始终是 200 而不是 304。我的印象是,当页面从缓存中提供时,因为它仍然是新鲜的,响应代码应该是 304。

这是否按预期工作,我误解了什么?当 Unicorn 在缓存中找到某些内容时,它是否只是不提供 304 代码?我应该不担心这种事情吗?

感谢任何指导。

最佳答案

Unicorn 无法知道您的应用程序如何处理缓存。因此它无法为您设置 etags。

正如 Rajesh 所说,304 是关于浏览器缓存的。您必须在您的应用中生成一个 Etag 哈希,然后将其发送到浏览器(通过 header )。

根据这篇文章,浏览器支持 etags:Browser support for 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/

关于ruby - 具有 unicorn 和 memcached 的 Sinatra 应用程序应该为缓存命中返回 304 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12147516/

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