0

处理这样的事情的一般最佳实践是什么..

##Post controller

def show
   @post = get_from_memcache
end

##show.html.erb
<div><%= post.body%></div>
<div><%= post.created_at%></div>
<div><%= post.category%></div>
<div><%= Post.favorites_count%></div>

get_from_memcache 从基本上不会过期的缓存中返回一个@post 对象,因为一旦创建了帖子,它的正文、类别、创建时间等都保持不变。

但是,在我看来,我确实调用了另一种方法 favorites_count,它从 memcache 中收集帖子的收藏夹计数,并且这个收藏夹不断变化。

当然,这是一个简化,有一些领域确实发生了变化。

现在如果我要实现某种http缓存,那么我需要做一个fresh_when还是stale?在我的控制器方法(显示)中,它基本上不会呈现视图,因此不会呈现更新的收藏夹计数,除非我使用包含收藏夹计数和其他动态字段的 etag,在这种情况下,它有点违背目的,因为这些字段会定期更改.

我该如何处理这种情况?所以我可以利用代理但保持页面中的某些动态字段更新?我能想到的一件事是 ajax 调用其他控制器操作以在页面加载后更新这些字段,但这可能很难看。

还有其他建议吗?

4

1 回答 1

0

如果你想使用页面缓存,你真的有 1 个可行的选择——用 ajax 加载那个数字

但是,您不需要为此通过 rails 堆栈 - 只需编写一个 Metal,它们非常快。

于 2010-10-12T20:46:31.063 回答