我有这种缓存
<% 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?
答案 0 :(得分:0)
正如上面的评论所说,这就是你应该缓存片段的方式(russian doll pattern
)。但是,看起来您根据两个对象缓存了一段内容,因此它应该只是<% cache [obj, obj.parent] %>
。你不需要在这里缓存两次,因为它没有效果。
EDIT2:
<% cache [obj, obj.parent] do %>
<%= render obj %>
<% end %>