Caching mongoid中是否有缓存查询结果的配置设置?
我有一个有很多菜系的商店模型。以下是控制器操作和编辑表单 app/controllers/shops\u controller.rbCaching mongoid中是否有缓存查询结果的配置设置?,caching,ruby-on-rails-3.2,mongoid,Caching,Ruby On Rails 3.2,Mongoid,我有一个有很多菜系的商店模型。以下是控制器操作和编辑表单 app/controllers/shops\u controller.rb class ShopsController < ApplicationController def edit @shop = Shop.where(id: params[:id]).first @cuisines = Cuisine.asc(:name) end end 问题是@cuisines的评估次数是商店菜系数量的两倍。第一次
class ShopsController < ApplicationController
def edit
@shop = Shop.where(id: params[:id]).first
@cuisines = Cuisine.asc(:name)
end
end
问题是@cuisines的评估次数是商店菜系数量的两倍。第一次执行查询后,它不会缓存查询
在搜索和尝试不同的解决方案以减少查询之后,我只能发现使用以下任何一种方法都会有所帮助
@cuisines = Cuisine.asc(:name).to_a
或
或
有人能给我推荐其他类似自动缓存的选项吗?Mongo会缓存查询使用的文档,并将它们保存在RAM中的工作集中: 然而,如果您想缓存特定查询的结果,您可以自己创建一个不同的集合(比如缓存),并将查询结果存储在其中。对于每次查找,首先在缓存中查找,如果在那里找不到,则执行实际查询并将其存储在缓存中以供下次访问。您可能还想使缓存过期,您可以使用TTL:
您可以将TTL设置为“x”分钟,如果再次访问数据,请将TTL再次重置为“x”,以便仅在x分钟内未访问文档时删除文档;或者,如果您的数据在y分钟后发生显著变化,您可以设置“y”的硬限制。只是分享一些方法,您将需要根据您的需求进行实际的实现。Update-也尝试过这样的方法:渲染部分:'cuisine_fields',locals:{f:f,cuisines:@cuisines}在查询中仍然没有变化。
@cuisines = Cuisine.asc(:name).to_a
@cuisines = Cuisine.asc(:name).entries
@cuisines = Cuisine.asc(:name).cache