2009-03-04 101 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' 

您還可以創建一個觀察者,觀察你的模型和過期的緩存,而無需顯式調用後創建或更新操作。

希望有所幫助。