为什么rails缓存检查每个页面请求的URL?

时间:2012-06-08 20:49:15

标签: ruby-on-rails caching redis

我目前正在使用redis-store,但我很确定这是Rails'做而不是redis-store的。

每个请求上,我在缓存日志中看到这样的项目:

1339188014.237987 (db 1) "get" "cache:http://www.domain.com/?"
1339188107.318145 (db 1) "get" "cache:https://www.domain.com/login?"

(两个单独的请求)

我只使用片段缓存(<%cache' some_key' do%> ...<%end%>)

使用页面缓存或动作缓存。

那么,为什么rails会看这些键呢?我找不到设置这些密钥的痕迹,而且我已经证实他们没有。

1 个答案:

答案 0 :(得分:1)

查看:

gems/activesupport-3.2.5/lib/active_support/cache.rb
你的ruby目录中的

(如果你不知道它在哪里,并且在UNIX / Mac上,你可以在命令行上输入which ruby来找到bin目录,然后从那里上去。)

在那里抛出一个断点并调试它以查看调用堆栈。该日志来自ActiveSupport::Cache::Store#log

中的第526行

当我调试这个时,我发现它与Metal有关,它正在寻找一个完全缓存的页面版本。它看起来非常无害,如果你实际上没有进行页面缓存,那么它可能不会发生任何坏事。