我有一个片段缓存设置到期30分钟。
<% cache(:expires_in => 30.minutes) do %>
<!-- table with items -->
<% end %>
它创建了第一个缓存,但现在表中的项目正在更新,它仍然显示旧数据。自项目更新以来已经过了几个小时。我已经清除了浏览器中的缓存,但它仍然使用它制作的第一个缓存。
这是我第一次设置缓存,所以我可能做错了。
更新
每次更新项目时,我都不热衷于更新缓存。原因是每个项目都有很多values
,项目值是表格中显示的内容。每次更新项目时,实际项目记录都不会更新,但所有值都会更新。如果每次更新值时都有缓存刷新,则每次更新项目时都会重新刷新缓存10次,因为所有项目值都会同时更新。
因此,我认为每30分钟更新一次表就可以了。
答案 0 :(得分:0)
我认为您使用的fragment_cache
并不完全正确。
因为rails名为method
,名称为:expire_fragment
<% cache(key, :expires_in => set_time_here) do %>
<!-- content -->
<% end %>
expire_fragment(key)
您可以重写为:
def expire_items_cache
puts "expire_items_cache"
expire_fragment("items")
end
<% cache("items", expires_in: 30.minutes) do %>
<!-- table with items -->
<% end %>
您可以在fragment_caching
上推荐更多内容答案 1 :(得分:0)
手动缓存过期已失效,请尝试基于密钥的过期,如果您未提供手动缓存过期时间,则密钥会在对象更改时自动更改,因为updated_at
更改密钥会自动更改并且新的缓存将得到构建,你不必担心旧的缓存它很适合你,并在需要时刷新(Memcache),所以试试这个
<% cache([items,items.max(:updated_at)]) do %>
<!-- table with items -->
<% end %>
还有一个没有在您的浏览器中缓存它停留在您的服务器缓存存储中 Rails Guide Caching并寻找fragement缓存 试着看看这个铁路广播Fragment Caching