2015-02-06 1 views
1

У меня есть три стола - Countries, USRegions и Regions. Для разных стран Regions занимает особое административное деление территории этой страны. Для США это 50 штатов и Вашингтон, D.C .. Так что еще раз:Как кэшировать sql-запросы, результат которых никогда не изменяется?

Countries - USA, Germany, Japan etc. 
USRegions - Pacific, Middle Atlantic, South Atlantic (a total of 9 rows) 
Regions - Virginia, Texas etc., but also similar divisions for other countries, like regional cities for Poland etc. 

В одном из представлений у меня есть форма, где пользователь может выбрать некоторые американские регионы и отдельные государства. Поэтому, чтобы отобразить их имена, я делаю два вызова в базу данных. Один со всеми строками в таблице USRegions и один со всеми строками с country_id = USA.id до таблицы Regions. Дело в том, что результат этих вызовов всегда будет одинаковым (если нет новых состояний, что маловероятно, хотя possible). Итак, есть ли способ кэшировать эти вызовы, и если да - как и где?

+0

Я имел в виду 50 штатов + Вашингтон, Д.С .. Я исправлю это. –

ответ

1

Rails автоматически кэширует SQL-запросы, если он снова встречает тот же запрос. Вот ссылка для этого. SQL Caching. Если вы все же хотите его кэшировать, вы можете использовать Low Level Caching. Используйте кеширование, основанное на ключах, и это сделает работу.

+0

Итак, мне нужно использовать низкоуровневое кэширование, потому что мне нужно кэшировать запрос между запросами, а не для этого конкретного запроса. –

+0

Да точно. Также проверьте консоль, когда вы находитесь в режиме просмотра без кеширования, и повторите тот же запрос, который будет выполняться снова и снова, когда вы его загрузите, а затем он будет всегда загружаться из кеша. – Deep

Смежные вопросы