0

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

3 に答える 3

4

あなたはページキャッシングをしていますよね?ディレクトリを削除しないのはなぜですか?

system("rm -rf #{RAILS_ROOT}/public/posts")
#Or, in more Rubyish code
FileUtils.rm_rf "#{RAILS_ROOT}/public/posts"
于 2009-12-11T06:55:39.077 に答える
0

これらのページを期限切れにする必要があるときにスイーパーを実行したいようです。この Rails Envy の投稿をチェックしてくださいhttp://railsenvy.com/2007/02/28/rails-caching-tutorial#sweepers

一連のハッシュ パラメーターを使用してページを削除できない場合は、http://railsenvy.com/2007/02/28/rails-caching-tutorial#clearingにキャッシュ ファイルのディレクトリ全体を削除する例があります。

その記事には、役立つ情報がさらに含まれている可能性があります。これは、すべての Rails キャッシングの 2 部構成の非常に優れた説明です。

于 2009-12-11T03:05:32.960 に答える
0

正規表現を expire_fragment に渡すことができます:

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

ただし、キャッシュストアがすべてのキーを反復処理できる場合にのみ機能することに注意してください。たとえば、 では機能しませんmemcached

編集:これはページのキャッシュであり、フラグメントのキャッシュではありません。expire_page は正規表現を受け入れないようです。うーん。

于 2009-12-10T22:55:27.440 に答える