Вероятно, самый простой метод - написать сценарий оболочки, который отправляет запросы GET на различные URL-адреса, которые будут охватывать ваши кеши, иначе известный как нагревание кеша.
Простая установка - это создание сценария оболочки с именем scripts / cache_warmer в вашем приложении, после чего вы можете запускать его вручную из командной строки вашего сервера, из сценария развертывания или из фонового процессора, такого как resque.
# Sample scripts/cache_warmer
GET http://localhost/
GET http://localhost/some_other_page
Альтернатива, если вы хотите, чтобы он был немного умнее. Например, возможность попасть по URL-адресам участников для ресурса будет означать использование задачи с граблями.
# lib/tasks/cache_warmer.rake
task :cache_warmer => :environment do
Resource.all.each do |resource|
Net::HTTP.get_response("http://localhost/resources/#{resource.id}")
end
end
Конечно, это всего лишь базовый пример. Ваш фактический код будет варьироваться в зависимости от маршрутов, которые вы пытаетесь поразить, и их количества. Возможно, вы захотите посмотреть варианты многопоточности для более высокого уровня параллелизма или использования альтернативного «рабочего» сервера для выполнения запросов. Нет предела тому, насколько сложным это может быть, просто зависит от вашей настройки.
person
Cluster
schedule
25.02.2013