すべてのクエリをキャッシュするにはどうすればよいですか。
最初のリクエスト:
@user = User.all
二つ目の要求
@user = User.all # Cached
これを行うのに役立つプラグインはありますか?
プロダクションモードです。Railsアプリがキャッシュしていることを確認するためのキャッシュされたフレーズが表示されないようです。
すべてのクエリをキャッシュするにはどうすればよいですか。
最初のリクエスト:
@user = User.all
二つ目の要求
@user = User.all # Cached
これを行うのに役立つプラグインはありますか?
プロダクションモードです。Railsアプリがキャッシュしていることを確認するためのキャッシュされたフレーズが表示されないようです。
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サーバーに保存できます。