Rails应用程序性能增强的疑问

时间:2011-04-22 15:25:15

标签: ruby-on-rails database performance caching optimization

我正在开发一个Rails中的应用程序,其中我有一个包含静态数据的表,这些数据大部分都是只读的,很少会更新非常

但是同一个查询将在表上执行多次(查询不涉及任何其他表)。

为避免重做这项工作,建议通过代码实现一些缓存机制吗?

如果是这样,实施该技术的最佳技术是什么?

我计划使用一个GLOBAL哈希变量,主键作为哈希键,值作为查询结果。

  1. 这种技术有什么缺点吗?

  2. 我可以看到的一件事是,当表更新时,需要重新启动服务器。

  3. 有更好的方法吗?

  4. 由于

3 个答案:

答案 0 :(得分:1)

  1. 是的,你重做一些存在且完美的东西。

  2. 嗯,看不出为什么你认为

  3. 当然,是的:

  4. 您的选择或多或少:

    • 内置:memory store

    • 需要进行一些设置:memcached

    • 替代密钥/值存储:redis http://redis.io/

    看看这里:http://railslab.newrelic.com/scaling-rails

答案 1 :(得分:0)

您可以使用Rails.cache - 当您需要刷新缓存时,只需使密钥到期吗?

答案 2 :(得分:0)

最简单的动态数据是使用Rails自己的片段缓存。过期使用清扫器,它是一个观察者,当您的模型发生变化时会调用该扫描器并使缓存失效。 See the Rails guide on caching获取有关Fragment Caching和Sweepers的帮助。

指南未涵盖的唯一内容非常明显,您需要使用全局键控片段在键字符串中包含您的记录ID。喜欢:<% cache( "foo_stuff_#{@foo.id}" ) do %>