gpt4 book ai didi

ruby-on-rails - Rails 缓存分页集合

转载 作者:行者123 更新时间:2023-12-04 06:19:12 25 4
gpt4 key购买 nike

只是对缓存分页项目集合的最佳方法进行一些研究。目前使用 jbuilder 输出 JSON 并一直在玩各种 cache_key 选项。

我见过的最好的例子是使用最新记录的 updated_at 加上集合中的项目数量。

def cache_key
pluck("COUNT(*)", "MAX(updated_at)").flatten.map(&:to_i).join("-")
end

此处定义: https://gist.github.com/aaronjensen/6062912

但是,这不适用于分页项目,我的收藏中总是有 10 个项目。

是否有任何解决方法?

最佳答案

使用分页集合,您只会得到一个数组。任何试图修补 Array 以包含缓存键的尝试都会有点令人费解。最好的办法是使用缓存方法在集合到集合的基础上生成一个键。

您可以将大量内容传递给缓存方法以生成 key 。如果你每页总是有 10 个项目,我认为计数不是很有值(value)。但是,页码和最后更新的项目将是。

cache ["v1/items_list/page-#{params[:page]}", @items.maximum('updated_at')] do

会生成一个缓存键,如
v1/items_list/page-3/20140124164356774568000

使用俄罗斯娃娃缓存,您还应该缓存列表中的每个项目
# index.html.erb
<%= cache ["v1/items_list/page-#{params[:page]}", @items.maximum('updated_at')] do %>
<!-- v1/items_list/page-3/20140124164356774568000 -->
<%= render @items %>
<% end %>

# _item.html.erb
<%= cache ['v1', item] do %>
<!-- v1/items/15-20140124164356774568000 -->
<!-- render item -->
<% end %>

关于ruby-on-rails - Rails 缓存分页集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21767949/

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