0

我有这种缓存

<% cache [obj.id, obj.updated_at] do %>
  <%= render obj %>
<% end %>

_obj.html.erb我有

<% cache ["obj/#{obj.id}/logic", obj.updated_at] do %>
some logic
<% end %>
<% cache [obj.parent.id, obj.parent.updated_at] do %>
 parent's logic logic
<% end %>

当仅更改父级的数据时,我仍然获得与以前相同的缓存。只有当 obj 的 updated_at 发生变化时,内部缓存才会更新。

这是正确的行为吗?缓存部分中的缓存不应该单独处理吗?还是每次触摸 obj.parent 时都需要触摸 obj?

4

1 回答 1

0

正如上面评论中所说,这就是您应该缓存片段(russian doll pattern)的方式。但是,看起来您只是根据两个对象缓存了一段内容,所以它应该是简单<% cache [obj, obj.parent] %>的 . 你不需要在这里缓存两次,因为它没有效果。

编辑2:

<% cache [obj, obj.parent] do %>
  <%= render obj %> 
<% end %>
于 2014-10-29T13:30:10.457 回答