新手问题 rails 中缓存的疑问。[已解决]

ayumi043 · 2013年03月31日 · 最后由 ayumi043 回复于 2013年03月31日 · 2253 次阅读

如图:

第一次已经缓存住结果了。第二次取出时,为什么会再次 selec 呢?

ps:已经上 google,stackoverflow,还是找不到原因。

@huacnlee@lgn21st@Rei

开发环境?生产环境才会缓存。

结果集是 lazy loading 的,直到结果集被遍历,才会发送 SQL 语句,所以你缓存的时候是一个空结果集。正确做法是强制 eager loading:

Rails.cache.fetch("top10") { Job.limit(10).all }

用 all 强制 eager loading。

十分感谢 2 位的解答

这个跟开发环境貌似没什么关联,用的 rails console production 也是一样。

按照@robbin 说的加个 all,果断就解决问题了。 困扰了一个晚上的疑惑,明白了开心啊。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号