【问题标题】:Expire cache fragment not working过期缓存片段不起作用
【发布时间】:2018-05-01 11:44:26
【问题描述】:

我正在尝试缓存侧边栏。里面有两个组列表(1:最喜欢的组,2:others_groups)

我的缓存方法:

1.将两个组列表缓存到我的模型用户中

 def cached_groups
    Rails.cache.fetch([self, "groups"]) {groups.to_a}
  end

  def cached_favgroups
    Rails.cache.fetch([self, "fav_groups"]) {fav_groups.to_a}
  end

2.缓存整个列表以及每个组的下方

  <% cache 'cache_all_groups_fav' do %>
    <% current_user.cached_favgroups.each do |group| %>
      <% cache group do %>
        <%= render 'groups/group', group: group %>
      <% end %>
    <% end %>
  <% end %>

  <% cache 'cache_all_groups' do %>
    <% current_user.cached_groups.each do |group| %>
      <% cache group do %>
        <%= render 'groups/group', group: group %>
      <% end %>
    <% end %>
  <% end %>

3.过期缓存到我的组/控制器

def favorit
  FavoritGroup.where(group_id: @group.id).where(user_id: current_user.id).first_or_create
  Group.where(group_id: @group.id).where(user_id: current_user.id).delete_all
  expire_fragment('cache_all_groups_fav')
  expire_fragment('cache_all_groups')
  expire_fragment('cached_favgroups')
  expire_fragment('cached_groups')
  expire_fragment('group')
  respond_to do |format|
    format.html { redirect_back }
    format.js { render 'groups/js/favorit' }
  end 
end 

def unfavorit
  FavoritGroup.where(group_id: @group.id).where(user_id: current_user.id).delete_all
  Group.where(group_id: @group.id).where(user_id: current_user.id).first_or_create
  expire_fragment('cache_all_groups_fav')
  expire_fragment('cache_all_groups')
  expire_fragment('cached_favgroups')
  expire_fragment('cached_groups')
  expire_fragment('group')
  respond_to do |format|
    format.html { redirect_back }
    format.js { render 'groups/js/unfavorit' }
  end
end 

注意:为此,我使用的是 store_cache 'dally' Ruby2.4 (Rails 5.1.4)

问题:expire_fragment 方法不起作用

你知道这里可以附加什么问题吗?

你的缓存策略也一样吗?

【问题讨论】:

    标签: ruby-on-rails ruby caching


    【解决方案1】:

    您确实应该在前端使用russian doll caching 进行此缓存。

    当您的任何组记录更新时,缓存将自动过期。

    【讨论】:

    • 感谢您的评论@Daniel,我同意了!
    猜你喜欢
    • 2016-11-18
    • 2013-01-14
    • 1970-01-01
    • 2015-05-31
    • 2011-11-08
    • 2016-07-20
    • 2011-08-19
    • 2013-07-01
    • 2011-02-25
    相关资源
    最近更新 更多