使用页内管理进行Rails页面缓存

时间:2010-03-09 22:32:14

标签: ruby-on-rails apache passenger mod-rails page-caching

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

我正在使用Apache + mod_rails(Passenger)。有没有办法向Apache表明当当前用户有会话变量或名为'admin'*的cookie时,应该忽略.html文件? Apache不需要评估会话变量的有效性(因为在这种情况下它将由Rails评估)。

1 个答案:

答案 0 :(得分:1)

  

有没有办法向Apache表明当当前用户有会话变量或名为'admin'*的cookie时,应该忽略.html文件?

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

相反,您可以使用Action Caching。来自docs的引用:

  

页面缓存的一个问题是   你不能将它用于那些页面   需要检查代码来确定   是否应该允许用户   访问。

这听起来就像你的情况一样。


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


您可以使用Dynamic Page Caching克服此问题。这个想法基本上是从JavaScript中添加“admin”部分。我个人并不喜欢这个。


还有一次更新:快速搜索brought我到this article 我们的想法是有条件地缓存页面并插入mod_rewrite来提供管理页面。

会为你效劳,但是非常糟糕的解决方案。