2009-12-10 39 views
0

如何在Rails中過期目錄?Rails如何過期目錄?

我有一個博客,其中/posts/列出了所有帖子。控制員帖子,操作索引。相當標準的東西。

使用will_paginate將帖子分組爲10組。

頁面將被緩存是這樣的:

/posts/ 
/posts/index/2 
/posts/index/3 
/posts/index/4 
... 
/posts/index/134 
/posts/index/135 
... 
etc.. 

當我需要到期此頁面,expire_page(posts_path)不會做的工作,它只會到期/posts.html

過期分頁頁面的最佳方式是什麼?由於頁數不確定,我是否應該過期整個/posts/index/目錄? 如何過期目錄

感謝

回答

4

你正在做頁面緩存,對不對?爲什麼不直接刪除目錄?

system("rm -rf #{RAILS_ROOT}/public/posts") 
#Or, in more Rubyish code 
FileUtils.rm_rf "#{RAILS_ROOT}/public/posts" 
+0

我最終做了一件非常類似於您的答案的東西,它指出我正確的方向,謝謝。如果你有很多控制器和清掃器,我發現頁面緩存可能會變成一場噩夢。 – deb 2010-02-26 22:49:41

0

您可以通過一個正則表達式來expire_fragment:

expire_fragment(r%{/posts/index/\d+}) 

但要注意,只有當你的緩存存儲能夠遍歷所有鍵的作品。例如,它不適用於memcached

編輯:我看到這是頁面緩存,而不是片段緩存。看起來expire_page不接受正則表達式。嗯。

0

聽起來就像你想要一臺清掃車在你需要過期那些頁面時運行。看看這個Rails的妒嫉後http://railsenvy.com/2007/02/28/rails-caching-tutorial#sweepers

如果您不能刪除一些集哈希則params的頁面,再有就是在http://railsenvy.com/2007/02/28/rails-caching-tutorial#clearing

可能有更多的一些刪除緩存文件的整個目錄的例子這篇文章中的信息可以幫助你,它是所有Rails緩存的非常好的2部分解釋。