无法使用页面缓存更新模型

时间:2009-03-04 14:09:09

标签: ruby-on-rails caching

我对Rails页面缓存机制有一个非常基本的理解问题。

在rails 2.0.5应用程序中,我使用了大量的整页缓存,一切正常,apache以极快的速度提供页面。

到目前为止,所有内容都是在管理部分处理的,缓存清理工作正常。

但是我现在已经向用户打开了一些版本的版本,这些用户没有通过“admin”命名空间,而是通过常规路径。

问题在于,当执行更新时,他们不会使用“put”操作进入mongrel,而只是获取缓存页面(数据库中没有操作,没有flash消息,没有任何内容。 ...)

我觉得我在这里错过了一些东西,是否可以使用常规REST路由的页面缓存?或者我的mongrel / apache配置有问题吗?

编辑:

感谢您的回答,但这不是我的意思,整页缓存机制运行正常,我在管理控制器中有专门的扫描程序来刷新页面。

我的问题是(或者我认为是)当通过常规控制器更新模型时,表单将提交到缓存页面而不是相应的操作。

形式

/页/ 1-你好/编辑
表格应使用“put”方法在“/ pages / 1-hello”

上发布

但我相信它会进入缓存页面'/pages/1-hello.html'并被视为常规获取....

当我提交表单时,我只看到show动作,没有flash消息,没有更新。 然后我擦除公共目录中的缓存文件,再次提交表单,突然一切正常....

我在“rails way”和railsenvy.com上的教程中阅读了缓存部分,但我从未见过任何关于缓存页面的内容会带来这些问题......

1 个答案:

答案 0 :(得分:1)

你可能正在缓存太多的页面。如果您正在缓存整个页面,然后通过put操作更改该页面的内容,除非您明确清除缓存,否则页面不会注册更改。

如果您有一个副本'The Rails Way',会给出一些很好的示例来使页面过期,以便在下次加载时重新加载。

或多或少,您必须在创建操作中执行以下操作:

expire_page :action => 'index'

您还可以创建一个观察者来观察您的模型并使缓存失效,而无需在创建或更新操作后显式调用它。

希望有所帮助。