使用Memcache和Dalli进行Ruby on Rails缓存似乎不起作用

用户名

所以我在运行在rails 3.3的页面上实现了一些缓存,但是当我查看生产日志时,会看到以下内容:

Read fragment views/#<Job:0xbbb6970>_big_2 (0.8ms)
Write fragment views/#<Job:0xbbb6970>_big_2 (0.5ms)
Read fragment views/#<Job:0xbbb65d8>_big_2 (0.5ms)
Write fragment views/#<Job:0xbbb65d8>_big_2 (0.6ms)
Read fragment views/#<Job:0xbbb61b4>_big_2 (0.6ms)
Write fragment views/#<Job:0xbbb61b4>_big_2 (0.4ms)
Rendered shared/_jobslist.html.erb (88.5ms)

我不确定这应该是这样的:)据我了解,一旦将片段保存在缓存中,它就应该一直读取。我指定了30分钟的到期时间。

<% jobs.each_with_index do |job, i| %>                                         
    <% cache("#{job}_big_2", :expires => 30.minutes) do %>
       ...
西蒙·C

您的缓存键是问题所在(的第一个参数#cache)。您要告诉Rails使用字符串标识缓存的片段"#{job}_big_2"要将Job实例插值到该字符串中,Ruby将对其进行调用#to_s,生成#<Job:0xbbb61b4>您所看到段。但这包含object_id,每次加载记录时,object_id都会有所不同-这就是为什么您没有得到任何缓存命中的原因。

如果Job是的后代ActiveRecord::Base,则可以使用#cache_key方法,该方法将生成带有记录的记录ID和updated_at时间戳的字符串,以生成该记录唯一的键,但是如果更新了记录,则将重新生成该键:

<% jobs.each_with_index do |job, i| %>                                         
    <% cache("#{job.cache_key}_big_2", :expires => 30.minutes) do %>
       ...

Read fragment views/jobs/1234-20130614084704_big_2 (0.8ms)
...

如果Job不是AR::Base模型,则需要实现类似的方法来生成将唯一标识Job记录的缓存键

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

urlencode和SQL请求不起作用...(cUrl和html特殊字符似乎不起作用)

来自分类Dev

禁用帐单和调整上的字段似乎不起作用

来自分类Dev

create-react-app 和 Sass 似乎不起作用

来自分类Dev

Ruby on Rails“除非”不起作用

来自分类Dev

Ruby on Rails关联不起作用

来自分类Dev

使用jQuery设置css似乎不起作用

来自分类Dev

从grep的shell中使用PCRE regex似乎不起作用

来自分类Dev

PHP:使用filesize()后,fopen似乎不起作用?

来自分类Dev

在onerror属性中使用闭包似乎不起作用

来自分类Dev

使用翻译功能时,Polyglot 似乎不起作用

来自分类Dev

使用对象解构时,Sinon 存根似乎不起作用

来自分类Dev

使用 cumsum 创建新表 - 代码似乎不起作用?

来自分类Dev

Mongoid缓存似乎不起作用

来自分类Dev

使用NSURL从缓存加载数据不起作用

来自分类Dev

使用Memcached和python-memcache进行缓存

来自分类Dev

Ruby on Rails和DataTables按钮不起作用

来自分类Dev

使用多个查询进行Rails搜索不起作用

来自分类Dev

使用Rails中的React进行组件渲染不起作用

来自分类常见问题

在mongodb中使用ISODate进行日期查询似乎不起作用

来自分类Dev

Facebook共享按钮在使用Javascript和Ajax的Webmethod中似乎不起作用

来自分类Dev

使用LoadTimeWeaving和Couchbase的Spring缓存-奇怪地不起作用

来自分类Dev

Rails片段缓存不起作用

来自分类Dev

Ruby on Rails 4每当cron作业不起作用时

来自分类Dev

Bootstrap解雇在Ruby on Rails中不起作用

来自分类Dev

销毁在Ruby on Rails中不起作用的路径

来自分类Dev

Ruby on Rails教程删除用户在heroku上不起作用

来自分类Dev

Ruby on Rails记住我登录不起作用

来自分类Dev

mysql + ruby on rails + linux mint =不起作用

来自分类Dev

Ruby on Rails:样式表不起作用ExecJS :: ProgramError

Related 相关文章

  1. 1

    urlencode和SQL请求不起作用...(cUrl和html特殊字符似乎不起作用)

  2. 2

    禁用帐单和调整上的字段似乎不起作用

  3. 3

    create-react-app 和 Sass 似乎不起作用

  4. 4

    Ruby on Rails“除非”不起作用

  5. 5

    Ruby on Rails关联不起作用

  6. 6

    使用jQuery设置css似乎不起作用

  7. 7

    从grep的shell中使用PCRE regex似乎不起作用

  8. 8

    PHP:使用filesize()后,fopen似乎不起作用?

  9. 9

    在onerror属性中使用闭包似乎不起作用

  10. 10

    使用翻译功能时,Polyglot 似乎不起作用

  11. 11

    使用对象解构时,Sinon 存根似乎不起作用

  12. 12

    使用 cumsum 创建新表 - 代码似乎不起作用?

  13. 13

    Mongoid缓存似乎不起作用

  14. 14

    使用NSURL从缓存加载数据不起作用

  15. 15

    使用Memcached和python-memcache进行缓存

  16. 16

    Ruby on Rails和DataTables按钮不起作用

  17. 17

    使用多个查询进行Rails搜索不起作用

  18. 18

    使用Rails中的React进行组件渲染不起作用

  19. 19

    在mongodb中使用ISODate进行日期查询似乎不起作用

  20. 20

    Facebook共享按钮在使用Javascript和Ajax的Webmethod中似乎不起作用

  21. 21

    使用LoadTimeWeaving和Couchbase的Spring缓存-奇怪地不起作用

  22. 22

    Rails片段缓存不起作用

  23. 23

    Ruby on Rails 4每当cron作业不起作用时

  24. 24

    Bootstrap解雇在Ruby on Rails中不起作用

  25. 25

    销毁在Ruby on Rails中不起作用的路径

  26. 26

    Ruby on Rails教程删除用户在heroku上不起作用

  27. 27

    Ruby on Rails记住我登录不起作用

  28. 28

    mysql + ruby on rails + linux mint =不起作用

  29. 29

    Ruby on Rails:样式表不起作用ExecJS :: ProgramError

热门标签

归档