使用此代码,我可以为访客用户缓存页面
caches_page :show, :unless => :user_signed_in?
但此刻我似乎无法找到一种方法将该缓存页面仅呈现给访客。
我知道你可以使用javascript来显示页面的不同部分,这些部分仅保留给已登录的用户,但我的应用程序有点复杂&页面上有许多不同的元素,这些元素要么是为登录的用户或访客保留的,要么甚至不提我在使用turbolinks或pjax时需要投入的时间。片段缓存似乎是一个很好的方法,但我想首先知道在Rails 3.x.x中是否可行。看起来很简单,但我不确定......
如何向Rails中的访客显示缓存页面?
提前致谢。
答案 0 :(得分:1)
引用Rails指南
页面缓存的一个问题是您无法使用它 需要以某种方式限制访问的网页。这就是行动 缓存进来。动作缓存的工作方式类似于页面缓存,除了 传入的Web请求确实从Web服务器发送到 Rails堆栈和Action Pack,以便可以运行过滤器之前 它在缓存服务之前。这允许身份验证和其他 在仍然提供输出结果的同时运行限制 来自缓存的副本。
所以,简单的答案就是你应该使用它
caches_action :show, :unless => :user_signed_in?
以便在过滤器之前authenticate_user!
能够先运行。