【问题标题】:How do you show cached pages to only guests in Rails? [duplicate]你如何在 Rails 中只向访客显示缓存页面? [复制]
【发布时间】:2013-08-01 00:21:24
【问题描述】:

使用这段代码,我可以为访客用户缓存一个页面

caches_page :show, :unless => :user_signed_in?

但目前我似乎无法找到仅将缓存页面呈现给访客的方法。

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


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

提前致谢。

【问题讨论】:

  • 你有没有试过检查它是否有效?
  • @MichaelSzyndel 你是什么意思?我只想向客人显示该缓存页面,但它也向我的用户显示缓存页面,这是我不想要的。
  • @BenjaminSinclaire 我现在正在检查它

标签: ruby-on-rails caching


【解决方案1】:

引用 Rails 指南

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

所以,简单的答案是你应该改用这个

caches_action :show, :unless => :user_signed_in?

这样过滤器之前的authenticate_user!就可以先运行。

【讨论】:

    猜你喜欢
    • 2019-11-02
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多