【问题标题】:Rails 3 / Heroku / Memcached - Miss / Miss,store / FreshRails 3 / Heroku / Memcached - Miss / Miss,store / Fresh
【发布时间】:2012-04-20 22:53:36
【问题描述】:

下午好,

我已经在我的 Heroku 应用程序中很好地设置了 Memcached。但是,有一些奇怪的行为让我怀疑我是否正确设置了它。

当我访问我的应用程序中的页面(使用 caches_page 设置)时,我会错过,然后错过/存储,然后是新鲜的。我觉得第一击应该是miss/store...

这就是我的意思。首次访问:

2012-04-07T21:07:11+00:00 app[web.1]: Started GET "/help" for xx.xx.xx.xx at 2012-04-07 21:07:11 +0000
2012-04-07T21:07:11+00:00 app[web.1]: cache: [GET /help] miss

第二次访问:

2012-04-07T21:07:16+00:00 app[web.1]: cache: [GET /help] miss, store

第三次访问:

2012-04-07T21:07:19+00:00 app[web.1]: cache: [GET /help] fresh

我不确定这是否真的是个问题,或者我是否应该继续我的快乐方式。谢谢!

【问题讨论】:

  • 不是 Rails 专家,但您应该查看随请求发送的 HTTP 标头。如果它们在 3 个请求之间不同,这可能是为什么第一个未命中不是“未命中,存储”的线索。
  • 据我所知,Heroku 实际上并不支持页面缓存。您必须使用带有 expires_in 标头的 Rack::Cache 或使用动作缓存。错过,错过/商店,新鲜可能无关。

标签: ruby-on-rails performance caching heroku memcached


【解决方案1】:

对于与缓存有关的任何事情,首先要做的始终是检查响应标头(您可以为此使用浏览器开发工具)。

我的猜测是第一个请求为 rails 会话返回了一个 set-cookie 标头,这导致机架缓存将响应视为不可缓存,这是有充分理由的。后续请求不会返回 set-cookie,因为已经存在会话,并且机架缓存会存储它。第三个请求命中了之前缓存的内容。

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2018-12-08
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-11
    相关资源
    最近更新 更多