Подтвердить что ты не робот

"Теплый кеш" при развертывании

Мне интересно, есть ли у кого-нибудь какие-либо плагины или рецепты capistrano, которые будут "предварительно нагревать" кэш страницы для приложения rails, создавая все кэшированные страницы html во время развертывания или локально до развертывания.

У меня есть некоторые в основном статические сайты, которые не сильно меняются, и будут работать быстрее, если html уже был написан, вместо того чтобы требовать, чтобы один посетитель попал на сайт.

Вместо того, чтобы создавать это самостоятельно (кажется, что это легко, но это низкий приоритет), он уже существует?

4b9b3361

Ответ 1

Я установил интеграционные тесты, которые подтверждают, что все основные области сайта доступны (всего несколько сотен страниц). Они не делают ничего, что меняет данные - просто отталкивайте страницы и формы.

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

Другой альтернативой было бы вытащить каждую страницу, которая появляется в вашей карте сайта (если она у вас есть, что вы, вероятно, должны). Это должно быть действительно легко написать gem/rake script, который делает это.

Ответ 2

Вы можете использовать wget или другую программу для размещения сайта. Фактически, этот сценарий упоминается как одно из применений на его странице руководства:

Этот параметр указывает Wget на удаление каждого файла, который он загружает, после этого. Это полезно для предварительной выборки популярных страниц через прокси-сервер, например:

   wget -r -nd --delete-after http://whatever.com/~popular/page/

Параметр -r должен извлекать рекурсивно и -nd не создавать каталоги.

Ответ 3

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

 require 'action_controller/integration'
 ActionController::Base::expire_page("/sitemap.xml")   
 app = ActionController::Integration::Session.new
 app.host = "notexample.com"
 app.get("/sitemap.xml")

См. http://gist.github.com/122738

Ответ 4

Предварительная загрузка этого способа - как правило, с заданием cron, начинающимся с 10:00 по тихоокеанскому времени и заканчивающимся в 6 утра по восточному времени, - это хороший способ сбалансировать ваш сайт на основе баланса.

Посмотрите плагин spider_test rails для простого способа сделать это при тестировании.

Если вы собираетесь использовать wget выше, добавьте опции --level =, -no-parent, --wait = SECONDS и --waitretry = SECONDS, чтобы дросселировать вашу нагрузку, и вы также можете записать журнал и захватывать ответы заголовка для диагностики или анализа (при необходимости измените путь из /tmp ):

wget -r --level=5 --no-parent --delete-after \
  --wait=2 --waitretry=10  \
  --server-response        \
  --append-output=/tmp/spidering-`date "+%Y%m%d"`.log
  'http://whatever.com/~popular/page/'