Архитектура Ruby on Rails: предварительная генерация представления для редко обновляемых данных - PullRequest
1 голос
/ 04 октября 2011

Я создаю приложение, которое опрашивает несколько датчиков каждые X минут и добавляет новые показания с отметкой времени в базу данных. Последние данные можно посмотреть на веб-странице.

В настоящее время я реализовал это с помощью двух отдельных процессов:

  1. Работа Cron с Whenever, для опроса датчиков и обновления БД, через Модель
  2. Просмотр (со связанным контроллером и моделью), чтобы извлечь последние данные из базы данных и отобразить их.

Поскольку данные обновляются только каждые X минут, я подумал, что, вероятно, более эффективно предварительно генерировать представление в виде статического HTML каждый раз при опросе датчиков. Таким образом, я уменьшаю доступ к базе данных на много порядков.

Это звучит как хорошая идея? Каков наилучший способ предварительно сгенерировать представление с помощью Rails?

1 Ответ

2 голосов
/ 04 октября 2011

Вы в основном описываете кеширование, которое Rails уже делает для вас. Если вычисленная страница вывода не изменяется, то Rails не делает это каждый раз, а просто дает вам кэшированную версию. Это автоматически, и вам не нужно думать об этом, если вы явно не отключили его.

Также возможно, что любой веб-сервер, который вы используете, делает что-то похожее.

Однако , по умолчанию, в среде development кэширование отключено отключено , и представления перезагружаются при каждом обновлении страницы. Так что, если вы беспокоитесь о том, что кэширование отключено в процессе разработки и, следовательно, оно будет отключено в работе, этого не должно быть. Кэширование намеренно отключено в разработке, поэтому вы можете изменить свое приложение и нажать кнопку обновления в браузере, чтобы увидеть различия на лету, без необходимости перезапускать свой веб-сервер разработки (Webrick, Mongrel или все, что вы используете) .

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