1

これは私を困惑させました。

キャッシュされたフラグメントを含むビューがあります。

 - cache :key=>"news" do    
   %h2 News
   - etc

私は以下を使用するスイーパーを持っています:

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment(:key => "news") 
end

コンソール出力に「expire_home_cache」が表示されているので、スイーパーが呼び出されます。

しかし、フラグメントは更新されません...

何か案は?

4

4 に答える 4

4

に置き換えexpire_fragment(:key => "news")てみてくださいActionController::Base.new.expire_fragment(:key => "news")

説明する時間はありませんが、それは私にとってはうまくいきました。

于 2009-05-29T00:00:56.213 に答える
2

あなたはこれを試すかもしれません:

   cache("news") do    
     %h2 News
     - etc
   end

と...

def expire_home_cache
  puts "expire_home_cache"
  expire_fragment("news") 
end

...またはこれを試してください...

 - cache({:key=>"news"}) do    
   %h2 News
   - etc

問題は、ルビーまたはレールがキーが何であるかを正確に判断するのに苦労しているため、キャッシュメソッドとexpire_fragmentが2つの異なるキャッシュキーを生成している可能性があると考えています.

于 2009-05-22T14:44:40.047 に答える
1

これを行う適切な方法は次のとおりです。

cache :news do

  ...
end

そして、あなたのスイーパーで:

expire_fragment :news
于 2009-07-27T15:25:42.053 に答える
0

これはあなたの質問に直接答えるものではありませんが、代わりに timed_fragment_cache プラグインを試しましたか?

http://github.com/tricycle/timed_fragment_cache/tree/master

これは、プロジェクトでフラグメントを期限切れにするためのはるかに簡単な方法であることがわかりました。

于 2009-07-17T23:49:25.580 に答える