显示Rails片段缓存和时间戳

时间:2013-01-19 15:36:10

标签: ruby-on-rails caching fragment-caching

我正在开发一个基于体育的Twitter和Facebook混合的社交网络。我有一个名为Post的模型(id,user_id,receiver_id,message,created_at),我想缓存Post视图。

应用程序/视图/帖/ _post.haml

- cache post do
  %div
    .author= link_to post.user.full_name, post.user
    .message= post.message
    .timestamp= timestamp_for_post(post.created_at)

昨天一切都很完美,但是当我访问我的“家庭饲料”时,我意识到时间戳是缓存的。 让我举个例子:

Berna Castro
test
Less than a minute ago - Comment  Props  Delete

事情是它不应该显示“不到一分钟前”,它应该显示“昨天”。 有没有办法不缓存时间戳?您建议如何解决这个问题?

我打算为获取时间戳做一个AJAX调用,但这很奇怪而且不好。

2 个答案:

答案 0 :(得分:1)

不是呈现相对时间戳,而是在模板中呈现实际的非相对时间戳,然后使用Moment.js之类的内容将其转换为客户端的相对时间戳。

这样做的另一个好处是,如果用户打开页面足够长的时间段,相对时间戳会发生变化,时间戳将自动更新。

在您真正了解网站上的内容很慢之前,您还应该考虑不缓存任何内容。缓存有很多这样的问题,过早的优化并不总是值得的。

答案 1 :(得分:0)

您可以将时间戳移出缓存块

  %div
   - cache post do
      .author= link_to post.user.full_name, post.user
      .message= post.message
   .timestamp= timestamp_for_post(post.created_at)