Кэшировать все запросы к базе данных в rails 2.3

Как я могу кэшировать все мои запросы.

первый запрос:

@user = User.all

второй запрос

@user = User.all # Cached

Есть ли какие-нибудь полезные плагины для этого?

Я в производственном режиме. Кажется, я не вижу какой-либо кэшированной фразы, подтверждающей, что мое приложение rails кэшируется.


person fujisan    schedule 19.09.2012    source источник


Ответы (1)


в вашем config/environments/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

Второй раз, когда тот же запрос выполняется к базе данных, он фактически не попадет в базу данных. В первый раз, когда результат возвращается из запроса, он сохраняется в кеше запросов (в памяти), а во второй раз он извлекается из памяти.

Проверьте это на своей консоли

Пользовательская нагрузка (мс) SELECT User.* FROM User

Завершено 200 OK за ?мс (Просмотры: ?мс | ActiveRecord: ?мс)

Вы можете сравнить его с первой и второй загрузкой.

Вы можете использовать гем Dalli из https://github.com/mperham/dalli для хранения кэша в memcached. сервер.

person Claud Kho    schedule 19.09.2012