2008-11-18 73 views
1

首先,让我说我对rails很新,一直在使用它几天。什么样的缓存策略最适合这个问题?

我的第一个应用是从传统的有一点不同:在我的模型类的一个我有一个从数据库和其他部分由做一个HTTP REST请求外部资源获取的数据拉的部分。

我已经为“外部”资源实现了延迟加载,但每当用户点击需要与该资源绑定的字段之一的页面时,我都会重新执行HTTP请求,显然不会规模。

我的问题是:你认为什么样的缓存策略是值得为这种情况?我怎么才能有一个缓存仅用于通过HTTP加载的数据?我想实现一个缓存,可以过期(比如5分钟)或者当用户执行一个应该使当前缓存无效的动作。

我怎么能实现它,这将是内存的权衡,以保持这些缓存?将这些数据保存在会话中还是服务器上的单独结构上是明智的?我应该考虑像GigaSpaces等外部缓存框架之一吗?

预先感谢任何提示您可能会提出这个问题。

回答

1

我会推荐两种策略之一:

  1. 使用memcached,开源缓存后台进程。客户端库可用于多种流行的语言,它支持之类的缓存数据的计划失效等
  2. 在数据库中存储缓存数据包含一些领域,具有“cache_last_updated”字段,更新每次保存一个沿记录。然后,从数据库中获取记录时,如果该字段的值超过5分钟,可以重新缓存来自RESTful API的数据(您没有使用CouchDB)并将其保存到数据库中,更新最后更新的时间戳,然后将这些数据返回给用户。

我推荐第一个,因为坦率地说,否则你会根据请求对数据库进行多次读写操作,从而导致显着的性能成本。

而且,这个问题可以适用于on Rails的Ruby的比其他的东西 - 很多场景涉及从一些外部源缓存。