2009-03-04 79 views
1

我对Rails页面缓存机制有一个非常基本的理解问题。无法更新页面缓存模型

在rails 2.0.5应用程序中,我使用了大量的完整页面缓存,一切都很好,页面以apache的速度服务。

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

但我现在已经打开了一些版本的部分给用户,他们没有经过“admin”命名空间,而是经过常规路由。

问题是,它似乎执行更新时,他们不会去与混合“put”行动,而是我只是得到缓存页面(在数据库中没有行动,没有闪光消息,没有什么....)

我觉得我错过了这里的东西,是否有可能使用普通的REST路由页面缓存?或者我对我的mongrel/apache配置有问题?

编辑:

谢谢您的回答,但它不是我的意思,整个页面缓存机制正常工作,我有专门的管理控制器,刷新页面扫墓。

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

形式

/页/ 1问候/编辑
形式应与“放”的方法张贴在“/页/ 1问候”

,但我相信它去缓存页面'/pages/1-hello.html',并被视为一个常规获取....

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

我读了缓存部分的“rails方式”和railsenvy.com教程,但我从来没有见过任何关于缓存页面的提及会带来这样的问题......

回答

1

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

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

或多或少,你必须做一些你创建行动中执行以下操作:

expire_page :action => 'index' 

您还可以创建一个观察者,观察你的模型和过期的缓存,而无需显式调用后创建或更新操作。

希望有所帮助。