3

indexカスタムソート列、ページネーションなどを使用して、アクションが投稿のリストを表示するページがあります。個々のページ/ソートオプションをすべてキャッシュできますが

cache(:direction => params[:direction], :sort => params[:sort], :page => params[:page]) do

1回の呼び出しでこれらすべてを一度に期限切れにすることはできませんexpire_action(これは問題です)。正規表現オプションがあることは知っexpire_actionていますが、それは面倒です(正規表現を使用してハッシュで作成されたキーを検索します)、機能しないmemcachedを使用しています。

への 1 回の呼び出しで、アクションのすべてのキャッシュ メンバーを期限切れにするにはどうすればよいexpire_actionですか? これが不可能な場合、他に推奨できるキャッシュ オプションはありますか?

4

1 に答える 1

1

Rails でのキャッシングに関するこの投稿に目を通すことをお勧めします。これは、この状況で探している結果を提供する可能性のあるさまざまな戦略を説明する非常に詳細な投稿です。

彼は投稿では言及していませんが、何らかのキャッシュ無効化パラメータ (キャッシュ バージョン ID など) を引数リストに追加すると、より普遍的な方法でキャッシュを期限切れにする方法が提供される可能性があります。例えば:

cache(:version => Posts.cache_version, :direction => params[:direction], :sort => params[:sort], :page => params[:page]) do

# Later on to bust the cache
Posts.cache_version = 2

実装方法の詳細は、アプリケーションで他のデータをどのように処理cache_versioncache_version=ているかによって異なります。これよりもエレガントな解決策もあるかもしれませんが、それが思い浮かびました。

于 2012-11-18T05:23:39.090 に答える