gpt4 book ai didi

ruby-on-rails - 过期缓存片段不起作用

转载 作者:数据小太阳 更新时间:2023-10-29 08:06:52 24 4
gpt4 key购买 nike

我正在尝试缓存 side_bar。其中,有两个组列表(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.将缓存过期到我的组/ Controller

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)

Problem : The expire_fragment method is not working

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

你对你的缓存策略做同样的事情吗?

最佳答案

你真的应该在前端做这个缓存,使用russian doll caching .

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

关于ruby-on-rails - 过期缓存片段不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47355031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com