Tembolok semua kueri basis data di Rails 2.3

Bagaimana saya bisa menyimpan semua pertanyaan saya dalam cache.

permintaan pertama:

@user = User.all

permintaan kedua

@user = User.all # Cached

Apakah ada plugin yang berguna untuk melakukan ini?

Saya sedang dalam mode produksi. Sepertinya saya tidak dapat melihat frasa cache apa pun untuk mengonfirmasi bahwa aplikasi Rails saya sedang melakukan cache.


person fujisan    schedule 19.09.2012    source sumber


Jawaban (1)


di config/environments/production.rb Anda

config.action_controller.perform_caching = true

caching dinonaktifkan secara default untuk pengembangan dan pengujian, dan diaktifkan untuk produksi.

Caching kueri adalah fitur Rails yang menyimpan kumpulan hasil yang dikembalikan oleh setiap kueri sehingga jika Rails menemukan kueri yang sama lagi untuk permintaan tersebut, Rails akan menggunakan kumpulan hasil yang di-cache dibandingkan menjalankan kueri terhadap database lagi.

Misalnya:

 class UsersController < ActionController

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

   ...

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

   end

 end

Saat kedua kalinya kueri yang sama dijalankan terhadap database, kueri tersebut tidak benar-benar masuk ke database. Pertama kali hasil dikembalikan dari kueri, hasilnya disimpan dalam cache kueri (dalam memori) dan kedua kalinya diambil dari memori.

Periksa di konsol Anda

Beban Pengguna (?ms) PILIH User.* DARI User

Menyelesaikan 200 OK dalam ?ms (Tampilan: ?ms | ActiveRecord: ?ms)

Anda dapat membandingkannya dengan pemuatan pertama dan pemuatan kedua.

Anda dapat menggunakan permata Dalli dari https://github.com/mperham/dalli untuk menyimpan cache Anda ke memcached server.

person Claud Kho    schedule 19.09.2012