我正在开发一个基于体育的Twitter和Facebook混合的社交网络。我有一个名为Post的模型(id,user_id,receiver_id,message,created_at),我想缓存Post视图。
- 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调用,但这很奇怪而且不好。
答案 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)