кэширование дорогих результатов запроса в RoR - PullRequest
2 голосов
/ 24 декабря 2011

Итак, у меня есть этот дорогостоящий запрос в БД, результат которого будет меняться не очень часто.

Дело в том, что единственное, что меня действительно волнует в 95% случаев с этим запросом, это строка необработанных данных размером 50 КБ.

Совершенно ли против "способа RoR" использовать кэширование страниц для кеширования результата дорогостоящего и часто используемого запроса?

Кэширование результирующего набора на самом сервере БД немного излишне, поскольку я действительно забочусь только о нескольких битах данных, которые я .collect {} извлек из результата запроса. Кэширование страниц является расточительным, поскольку эти данные используются несколькими страницами, и все они будут кешировать одно и то же с изменением только их представления.

1 Ответ

4 голосов
/ 24 декабря 2011

Звучит так, как будто вы хотите кеш рельса

Rails.cache.fetch('cache_key') do
  # calculations here
end

Это либо выполняет вычисления и помещает возвращаемое значение блока в кеш, либо считывает значение из кеша.

Вы можете либо явно истечь (Rails.cache.delete), либо установить время истечения, либо использовать генерационные ключи кеша.

Существует множество хранилищ кеша, которые вы можете использовать, но одним из наиболее распространенных является memcsched. Подробно о том, как вы можете настроить хранилище кеша здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...