Ruby on Rails 俄罗斯娃娃缓存
示例
您可能希望将缓存的片段嵌套在其他缓存的片段中。这称为Russiandollcaching。
这样做的好处Russiandollcaching是,如果更新单个产品,则在重新生成外部片段时可以重用所有其他内部片段。
如上一节中所述,如果updated_at缓存文件直接依赖的记录的更改值更改,则缓存文件将过期。但是,这不会使片段嵌套在其中的任何缓存失效。
例如,采用以下视图:
<% cache product do %> <%= renderproduct.games%> <% end %>
依次呈现此视图:
<% cache game do %> <%= render game %> <% end %>
如果更改了游戏的任何属性,则该updated_at值将设置为当前时间,从而使缓存过期。
但是,由于updated_at不会更改产品对象,因此该缓存不会过期,并且您的应用将提供过时的数据。为了解决这个问题,我们将模型与touch方法联系在一起:
class Product < ApplicationRecord has_many :games end class Game < ApplicationRecord belongs_to :product, touch: true end
热门推荐
10 分别发的祝福语简短
11 大外甥高考祝福语简短
12 小学毕业校长简短祝福语
13 搞工程发财祝福语简短
14 冬季祝福语男生文案简短
15 同事生子问候祝福语简短
16 退休文案寄语简短祝福语
17 送给自己的祝福语简短
18 简短祝福语毛笔字