Memcache for pagination

时间:2010-10-18 15:24:06

标签: ruby-on-rails memory-management pagination memcached

对于实施而言,这感觉真是个坏主意,而且我不确定在内存中潜在的成本可以节省多少速度。

使用Dalli和Memecache存储一组数据,这些数据会在需要分页的每个页面请求上被提取。它有很多数据,所以如果可能的话我真的不想继续使用数据库,但我也不知道这个操作对于内存来说有多昂贵,无论是在memcache还是在系统内存中。为了分页,我基本上做了以下几点:

  1. 调用memcache以查看是否存在给定数据
  2. 如果找到,请获取数据并转到4。
  3. 如果找不到,请从数据库和缓存中获取
  4. Dup object ,因为对象已冻结。 ?? < - 似乎是一个非常糟糕的主意......
  5. 返回分页数据以供显示。
  6. WillPaginate必须对来自数据库的数据集执行操作,但它会抛出“无法修改冻结对象”错误。

    这有多糟糕? dup - 一个大对象(缓存以节省调用db的时间)似乎最终会占用大量额外内存并运行GC远远超过需要。有人提出一些解决方法吗?

1 个答案:

答案 0 :(得分:0)

您也可以缓存渲染的html,而不是在模型/列表视图中处理对象。您甚至可以预先缓存内容以获得额外的提升:)