我正在开发一个Rails中的应用程序,其中我有一个包含静态数据的表,这些数据大部分都是只读的,很少会更新非常。
但是同一个查询将在表上执行多次(查询不涉及任何其他表)。
为避免重做这项工作,建议通过代码实现一些缓存机制吗?
如果是这样,实施该技术的最佳技术是什么?
我计划使用一个GLOBAL哈希变量,主键作为哈希键,值作为查询结果。
这种技术有什么缺点吗?
我可以看到的一件事是,当表更新时,需要重新启动服务器。
有更好的方法吗?
由于
答案 0 :(得分:1)
是的,你重做一些存在且完美的东西。
嗯,看不出为什么你认为
当然,是的:
您的选择或多或少:
内置:memory store
需要进行一些设置:memcached
替代密钥/值存储:redis
http://redis.io/
答案 1 :(得分:0)
您可以使用Rails.cache
- 当您需要刷新缓存时,只需使密钥到期吗?
答案 2 :(得分:0)
最简单的动态数据是使用Rails自己的片段缓存。过期使用清扫器,它是一个观察者,当您的模型发生变化时会调用该扫描器并使缓存失效。 See the Rails guide on caching获取有关Fragment Caching和Sweepers的帮助。
指南未涵盖的唯一内容非常明显,您需要使用全局键控片段和在键字符串中包含您的记录ID。喜欢:<% cache( "foo_stuff_#{@foo.id}" ) do %>