Question

Je me demande si quelqu'un a des plugins ou des recettes de Capistrano qui « préchauffage » le cache de page pour une application rails en construisant toute la page en cache html au moment où le déploiement est fait, ou localement avant le déploiement se passe.

J'ai certains sites pour la plupart statiques qui ne changent pas beaucoup, et serait plus rapide si le code HTML était déjà écrit, au lieu d'exiger un visiteur de frapper le site.

Plutôt que de créer moi-même (semble facile, mais la priorité lowwwww) ce qu'il existe déjà?

Était-ce utile?

La solution

J'ai mis les tests d'intégration qui confirment toutes les principales zones du site sont disponibles (quelques centaines de pages au total). Ils ne font rien qui change les données -. Il suffit de tirer en arrière les pages et les formulaires

Je ne les lance pas quand je me déployer instance de production, mais maintenant vous le dites - il peut effectivement être une bonne idée

.

Une autre alternative serait de tirer chaque page qui apparaît dans votre sitemap (si vous en avez un, que vous devriez probablement). Il devrait être vraiment facile d'écrire un script gem / râteau qui fait cela.

Autres conseils

Vous pouvez utiliser wget ou un autre programme d'araignée du site. En fait, est mentionné ce genre de scénario comme l'une des utilisations dans sa page de manuel:

  

Cette option indique Wget supprimer chaque fichier qu'il télécharge, après l'avoir fait. Il est utile pour prélecture pages les plus consultées par un proxy, par exemple:.

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

L'option -r est de récupérer de manière récursive et -ND de ne pas créer des répertoires.

J'utilise une tâche de coupe qui ressemble à ceci pour rafraîchir ma page en cache plan du site tous les soirs:

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

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

préchargement de cette façon - en général, avec un travail de cron pour commencer à 22 heures Pacifique et se terminer à 6h du matin heure de l'Est -. Est un bon moyen pour équilibrer la charge de votre site

Consultez la spider_test rails plug-in un moyen simple de le faire dans les tests .

Si vous allez utiliser le wget ci-dessus, ajoutez le --level =, --no-parent, --wait = SECONDES et --waitretry = options SECONDES étranglent votre charge, et vous pourriez aussi bien vous identifier et capturer les réponses d'en-tête pour le diagnostic ou l'analyse (modifier le chemin de / tmp si désiré):

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/'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top