1

我很想在我运行的 Rails 站点上使用页面缓存。每个页面上的信息大多是不变的,但是需要运行以收集信息的查询很复杂,并且在某些情况下可能很慢。使用页面缓存的唯一障碍是管理界面内置在主站点中,因此可以在不离开感兴趣的页面的情况下执行管理操作。

我正在使用 Apache+mod_rails(乘客)。当当前用户具有会话变量或名为“admin”* 的 cookie 时,是否有办法向 Apache 指示应忽略 .html 文件?session 变量不需要由 Apache 评估有效性(因为在这种情况下它将由 Rails 评估)。

4

1 回答 1

1

当当前用户具有会话变量或名为“admin”* 的 cookie 时,是否有办法向 Apache 指示应忽略 .html 文件?

我相信这是不可能的。即使是这样,我想也应该非常棘手。

相反,您可以使用动作缓存。来自文档的引用:

页面缓存的问题之一是您不能将它用于需要检查代码以确定是否应允许用户访问的页面。

这听起来正是你的情况。


但是,如果您仍然真的需要通过 Web 服务器进行页面缓存,我认为您最好为管理员和非管理员实现单独的页面。这是因为一个原因。当您启用页面缓存时,rails 根本不会处理请求,因此无法知道用户是否经过身份验证。


您可能可以使用动态页面缓存来克服这个问题。这个想法基本上是从 JavaScript 添加“管理”部分。不过我个人不是很喜欢这个。


另一个更新:快速搜索我带到了这篇文章
这个想法是有条件地缓存页面并插入mod_rewrite以服务管理页面。

将为您工作,但这是一个非常肮脏的解决方案。

于 2010-03-09T22:37:28.377 回答