【发布时间】:2013-03-13 01:46:52
【问题描述】:
我有一个用户可以保存很多搜索和很多任务。我正在使用以下内容缓存它们
- cache user do
- user.tasks.each do |task|
- cache task do
# do something with task
- cache user do
- user.saved_searches.each do |search|
- cache search do
# do something with search
我添加了通过touch 选项更新用户的选项,只要这些记录有任何更新。我想澄清的问题是这种情况:
我更新了一个搜索,它使该搜索的缓存过期,实际上是用户的缓存。由于用户的缓存已过期,user.tasks 将被执行。
有没有办法防止这种情况发生?
我正在考虑向cache user 添加一个密钥并手动使我在使用cache_digest gem 之前一直在做的缓存过期,但我不知道该怎么做。
【问题讨论】:
-
查看我之前对一个非常相似的问题的回答。 stackoverflow.com/questions/15194270/…
-
如果我没看错你的代码,
user.tasks仍然会被执行。而且,它总是会被执行,所以它是一个比当前代码更糟糕的选择。
标签: ruby-on-rails ruby-on-rails-4 russian-doll-caching