如何向Rails中的访客显示缓存页面?

时间:2013-07-31 01:04:02

标签: ruby-on-rails caching

使用此代码,我可以为访客用户缓存页面

caches_page :show, :unless => :user_signed_in?

但此刻我似乎无法找到一种方法将该缓存页面仅呈现给访客。

我知道你可以使用javascript来显示页面的不同部分,这些部分仅保留给已登录的用户,但我的应用程序有点复杂&页面上有许多不同的元素,这些元素要么是为登录的用户或访客保留的,要么甚至不提我在使用turbolinks或pjax时需要投入的时间。片段缓存似乎是一个很好的方法,但我想首先知道在Rails 3.x.x中是否可行。看起来很简单,但我不确定......


如何向Rails中的访客显示缓存页面?

提前致谢。

1 个答案:

答案 0 :(得分:1)

引用Rails指南

  

页面缓存的一个问题是您无法使用它   需要以某种方式限制访问的网页。这就是行动   缓存进来。动作缓存的工作方式类似于页面缓存,除了   传入的Web请求确实从Web服务器发送到   Rails堆栈和Action Pack,以便可以运行过滤器之前   它在缓存服务之前。这允许身份验证和其他   在仍然提供输出结果的同时运行限制   来自缓存的副本。

所以,简单的答案就是你应该使用它

caches_action :show, :unless => :user_signed_in?

以便在过滤器之前authenticate_user!能够先运行。