ruby-on-rails - 为什么 Rails 缓存会检查每个页面请求的 URL?

标签 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 会查看这些键?我找不到设置这些 key 的痕迹,并且我已验证它们为零。

最佳答案

查看:

gems/activesupport-3.2.5/lib/active_support/cache.rb

在您的 ruby​​ 目录中(如果您不知道它在哪里并且在 UNIX/Mac 上,您可以在命令行中键入 which ruby​​ 以找到 bin 目录,然后从那里向上.)

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

中的第 526 行

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

关于ruby-on-rails - 为什么 Rails 缓存会检查每个页面请求的 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10955868/

相关文章:

ruby-on-rails - 救援中的 DRY 代码 => Rails 中各种模型文件中的 e

java - 如何使用 Tomcat 服务器缓存表 (MySQL) 以查找数据

redis - Redis 列表/集合中的唯一值

javascript - 如何让 axios-cache-adapter 使用 responseType blob 缓存文件下载?

Redis zrangebyscore 性能,当 min 为 -inf 时

redis - 追踪 Redis 错误事件

javascript - jQuery 从 <a href 'Click Me' >Click Me</a> 中提取 ="http://example.com"

ruby-on-rails - 无法打开到本地主机的 TCP 连接:9200(连接被拒绝 - 连接(2)用于 "localhost"端口 9200)(Faraday::ConnectionFailed)

ruby-on-rails - 索引:正确vs外键:正确(Rails)

asp.net-mvc - 如何缓存 FileContentResult 以提高性能?