Как сохранить интенсивную базу данных в кеш из фонового процесса в рельсах - PullRequest
2 голосов
/ 06 февраля 2011

На моем сайте есть страница с интенсивным использованием базы данных, которую я кеширую на 5 минут.Но производительность снижается, когда срок действия кэша истекает, и страница должна быть обновлена.Я подумал, почему бы не вычислить страницу из фонового процесса (например, рабочего процесса) один раз в 5 минут и сохранить ее в кеше, а пользовательский запрос будет обслуживаться из кеша каждый раз.И в результате ни один пользователь не должен ждать, пока эта страница будет отображена.

Существует ли эффективный способ сделать это?Любая помощь очень ценится.

Спасибо,

1 Ответ

1 голос
/ 06 февраля 2011

Я бы порекомендовал просто позвонить на ваш веб-сервер, чтобы получить информацию о странице из вашей фоновой работы или работы cron.Затем вы позволяете всему стеку Rails обрабатывать вызов.Вы можете создать задание cron, чтобы делать это каждые 4-5 минут и передавать параметр на страницу, чтобы он принудительно обновлял кэш, например:

complex/page?force=true

Затем ваш контроллер / действие / модель проверитна наличие этого параметра.При наличии силы страница не использовала бы кэшированную версию, но вместо этого воссоздала бы кеш.

...