2012-03-07 7 views
0

私はキャッシング(フラグメント)ビューにdalliストアを使用したいとします。このようなことをすると、可能なDBキャッシングにmemcacheも使用されますか?Rails 3のキャッシュに関する質問

Rails.cache.fetch("something") { smth } 

また、私のような何かをした場合:

Author.all 

Railsのコンソールは、データベースを照会していますことを私が表示されますが、私は再びAuthor.allを実行する場合、それは結果が取得されたことを私が表示されますキャッシュから。 Rails.cacheを明示的に使用する必要がありますか。いつActiveRecordを使用してキャッシュを行う必要がありますか?ストアが:mem_cache_storeある場合

答えて

1

フェッチおよび操作は、現在設定されている キャッシュストアから項目を取得読んで、 例えばファイルシステムからキャッシュ ストアが:file_storeある場合、またはMemcachedの サーバーから。 は、したがって、あなたが フラグメント・キャッシュのためのMemcachedを使用したい場合、あなたはそれに応じ cache_storeを設定する必要があります。一つはほとんど変更されない多くの クエリを含む大規模、複雑な見解を持っている場合

ActionController::Base.cache_store = :mem_cache_store, "cache-1.example.com" 

fragment caching を使用することが推奨されまたはゆっくりと。断片化 キャッシュは、完全に の静的ページ(高速、ただし固定)と動的ページ (遅いが可変です)との間の良好なトレードオフです。ページ全体ではなく ページの特定のセクションをキャッシュする必要がある場合、フラグメントキャッシングは のようになります。Ryan Batesが彼のRailscast about fragment cachingで述べたとおりです。

ページとアクションのキャッシングはさらに優れていますが、ページのパフォーマンスを向上させるためには が最適ですが、ユーザー固有のコンテンツが含まれている場合は問題があります。 この場合、 dynamic page cachingを使用することができます。同様の手法を使用しています。

SQL Cachingは、1回のアクションで の間だけ持続します。