rails digitalocean deploy app ruby-on-rails ruby deployment caching capistrano

ruby on rails - digitalocean - "Warm Up Cache" en la implementación



deploy ruby on rails nginx (4)

Podría usar wget u otro programa para arañar el sitio. De hecho, este tipo de escenario se menciona como uno de los usos en su página de manual:

Esta opción le dice a Wget que elimine cada archivo descargado, después de haberlo hecho. Es útil para precargar páginas populares a través de un proxy, por ejemplo:

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

La opción -r es para recuperar de forma recursiva, y -y para no crear directorios.

Me pregunto si alguien tiene plugins o recetas de capistrano que "precalentarán" el caché de la página para una aplicación de rieles al construir todo el html almacenado en caché en la página al momento de la implementación, o localmente antes de que ocurra la implementación.

Tengo algunos sitios principalmente estáticos que no cambian mucho, y se ejecutarían más rápido si el html ya estaba escrito, en lugar de requerir que un visitante llegue al sitio.

En lugar de crearlo yo mismo (parece fácil, pero baja prioridad), ¿ya existe?


He establecido pruebas de integración que confirman que todas las áreas principales del sitio están disponibles (unos cientos de páginas en total). No hacen nada que cambie los datos, simplemente retire las páginas y los formularios.

Actualmente no los ejecuto cuando despliego mi instancia de producción, pero ahora lo mencionas, en realidad puede ser una buena idea.

Otra alternativa sería tirar de cada página que aparece en su mapa del sitio (si tiene una, que probablemente debería). Debería ser realmente fácil escribir un script de gema / rake que lo haga.


La precarga de esta manera, en general, con un trabajo cron para comenzar a las 10 p. M. Pacific y terminar a las 6 a.m., hora del este, es una buena forma de equilibrar la carga de su sitio.

Consulte el plugin spider_test rails para obtener una forma sencilla de hacerlo en las pruebas.

Si va a usar el wget anterior, agregue las opciones --level =, --no-parent, --wait = SECONDS y --waitretry = SECONDS para acelerar su carga, y también puede registrar y capturar el respuestas de encabezado para diagnóstico o análisis (cambie la ruta de / tmp si lo desea):

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/''


Utilizo una tarea de rake que se ve así para actualizar el mapa del sitio en caché de la página todas las noches:

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

Ver http://gist.github.com/122738