所以我有这个昂贵的数据库查询,其结果不会经常改变。
问题是,在这个查询中 95% 的时间里我唯一真正关心的是 50 kb 的原始数据字符串。
使用页面缓存来缓存昂贵且经常使用的查询结果是否完全违反“RoR way”TM?
在数据库服务器本身上缓存结果集有点过分了,因为我实际上只关心从查询结果中收集的一些数据。{} 页面缓存是一种浪费,因为几个不同的页面都使用这些数据,并且都会缓存相同的内容,而只有其周围的 View 发生变化。
最佳答案
听起来你想要 Rails 缓存
Rails.cache.fetch('cache_key') do
# calculations here
end
这要么执行计算并将 block 的返回值填充到缓存中,要么从缓存中读取值。
您可以显式地使事物过期 (Rails.cache.delete) 或设置过期时间或使用分代缓存键。
您可以使用多种缓存存储,但最常见的缓存存储之一是 memcsched。有关如何配置缓存存储的详细信息 here
关于ruby-on-rails - 在 RoR 中缓存昂贵的查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8620456/