0

すべてのクエリをキャッシュするにはどうすればよいですか。

最初のリクエスト:

@user = User.all

二つ目の要求

@user = User.all # Cached

これを行うのに役立つプラグインはありますか?

プロダクションモードです。Railsアプリがキャッシュしていることを確認するためのキャッシュされたフレーズが表示されないようです。

4

1 に答える 1

0

config / environment/production.rbにあります

config.action_controller.perform_caching = true

キャッシュは、開発とテストではデフォルトで無効になっており、本番環境では有効になっています。

クエリキャッシュは、各クエリによって返された結果セットをキャッシュするRailsの機能であるため、Railsがそのリクエストに対して同じクエリを再度検出した場合、データベースに対してクエリを再度実行するのではなく、キャッシュされた結果セットを使用します。

例えば:

 class UsersController < ActionController

 def index
   # Run a find query
   @users = User.all

   ...

   # Run the same query again
  @users = User.all

   end

 end

同じクエリがデータベースに対して2回実行されても、実際にはデータベースにヒットしません。クエリから最初に結果が返されるときは、クエリキャッシュ(メモリ内)に格納され、2回目はメモリからプルされます。

コンソールで確認してください

ユーザー負荷(?ms)SELECT User。* FROMUser

?msで200 OKを完了しました(ビュー:?ms | ActiveRecord:?ms)

1回目の負荷と2回目の負荷と比較できます。

https://github.com/mperham/dalliのDalligemを使用して、キャッシュをmemcachedサーバーに保存できます。

于 2012-09-19T06:31:13.027 に答える