我应该如何缓存一个应该跟踪每个视图的页面?

时间:2012-01-22 18:08:09

标签: ruby-on-rails-3 caching

我有一个产品页面。 show动作具有以下代码:

def show
  ...
  LiveView.add_live_view(@product, request)
  ...
end

在同一个控制器中,如果我有:

caches_action :show, :cache_path => (proc do 
  product_path(params[:id], :user_id => user_signed_in? ? current_user.id : nil)
end)

我试图通过从request抓取IP地址来显示实时视图。所以,我需要跟踪每一个点击页面的视图。但是,如果页面已经缓存,则永远不会触发LiveView.add_live_view(@product, request)方法。

问题是。我应该缓存这个动作吗?如果是这样,应该怎么做?或者我应该忘记缓存此方法?

我应该考虑不同的缓存方法吗?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不确定应用程序级别的缓存是否是正确的解决方案。我建议查看mod_cache缓存apache层的响应。 (如果你正在与乘客一起运行apache)。

最后,不要忘记这条规则。除非必须,否则永远不要优化。我的意思是,首先测试你的应用程序。如果不缓存,则不会遭受性能损失。你还需要缓存一切吗?做一些代码分析,也许你可以使用更好的算法。

编辑,同时查看HTTP状态代码304。如果用户刷新页面,并且您可以传达没有任何更改,那么只需返回304.