2017-11-17 24 views
3

サイドバーをキャッシュしようとしています。 (:好きなグループ、2:others_groups 1)有効期限切れのキャッシュフラグメントが機能しない

マイキャッシュaproach:そこに、二つのグループのリストがあり、私のモデルのユーザーにグループの二つのリストを1.caching

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.cachingし、グループの各

<% 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.Expire私のグループ/コントローラー

にキャッシュ以下
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 'ぐずぐず' Ruby2.4(Railsの5.1.4)

問題だ:expire_fragment方法が

が動作していないあなたはありますかどのような問題がここに追加できるのか?

キャッシュ戦略についても同じことをしていますか?

答えて

1

このキャッシュはフロントエンドで実際にrussian doll cachingとしてください。

グループレコードが更新されると、キャッシュは自動的に期限切れになります。

+0

@Danielさんのご意見ありがとうございました。 –

関連する問題