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

ayumi043 · March 31, 2013 · Last by ayumi043 replied at March 31, 2013 · 2253 hits

如图:

第一次已经缓存住结果了。第二次取出时,为什么会再次 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,果断就解决问题了。 困扰了一个晚上的疑惑,明白了开心啊。

You need to Sign in before reply, if you don't have an account, please Sign up first.