意外的memcache在rails 3.2应用程序中获取

时间:2012-09-09 16:53:49

标签: ruby-on-rails caching memcached ruby-on-rails-3.2

我的rails 3.2应用程序试图从缓存中获取值(通过dalli进行memcached),我不希望它是缓存。它没有得到任何缓存命中,但我很困惑正在发生的事情。使用WEBrick在生产和开发时config.action_controller.perform_caching = true会发生这种情况。

这是我在memcache详细输出中看到的片段:

<30 GET https://www.myrailsapp.com/?
>30 Writing an error: Not found
>30 Writing bin response:
>30   0x81 0x00 0x00 0x00
>30   0x00 0x00 0x00 0x01
>30   0x00 0x00 0x00 0x09
>30   0x00 0x00 0x00 0x00
>30   0x00 0x00 0x00 0x00
>30   0x00 0x00 0x00 0x00
<30 Read binary protocol data:
<30    0x80 0x00 0x00 0xd0
<30    0x00 0x00 0x00 0x00
<30    0x00 0x00 0x00 0xd0
<30    0x00 0x00 0x00 0x00
<30    0x00 0x00 0x00 0x00
<30    0x00 0x00 0x00 0x00

请注意,只有缓存GET,我没有看到任何缓存写入。

我看到类似的缓存GET尝试我的所有操作,其中大多数是JSON API调用。所有这些都导致缓存未命中。像这样,

<31 GET https://www.myrailsapp.com/api/somecall?param1=foo&param2=bar
>31 Writing an error: Not found

我的app中没有指定任何caches_action指令。

这是一个rails bug吗?

如果不是,我应该在哪里停止这些不必要的缓存GET?

感谢。

1 个答案:

答案 0 :(得分:0)

根据Github线程中的cswilliams你发布了:

默认情况下启用rack_cache似乎是个问题(因为在主分支中已更新)。

在您的应用程序或环境属性文件(例如config / environments / development.rb)中禁用它似乎可以解决此问题:

config.action_dispatch.rack_cache = false