使用分页集合,您只会得到一个数组。任何试图修改 Array 以包含缓存键的尝试都会有点令人费解。您最好的选择是使用缓存方法在集合到集合的基础上生成一个密钥。
您可以将大量内容传递给缓存方法以生成密钥。如果您总是每页有 10 个项目,我认为计数不是很有价值。但是,页码和最后更新的项目将是。
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 %>