17


10

デプロイが行われるとき、またはデプロイが行われる前にすべてのページキャッシュされたHTMLを構築することによって、Railsアプリのページキャッシュを「予熱」するプラグインまたはcapistranoレシピが誰かにあるかどうか私は思っています。

私は、ほとんど変わらない静的サイトをいくつか持っています。そして、HTMLがすでに書かれていれば、1人の訪問者にそのサイトにアクセスするように要求するよりも速く走るでしょう。

これを自分で作成するのではなく(簡単に思えますが、優先順位は低いですが)、すでに存在するのでしょうか。

4 Answer


18


あなたはサイトをくぐるのに `wget`か他のプログラムを使うことができます。 実際、この種のシナリオは、そのマニュアルページの用途の1つとして言及されています。

_ _ このオプションは、ダウンロードしたすべてのファイルを削除するようにWgetに指示します。 それはプロキシを通して人気のあるページをプリフェッチするために役に立ちます、例えば:

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

-rオプションは再帰的に取得し、-ndはディレクトリを作成しません。 _ _


4


私は毎晩私のページキャッシュされたサイトマップをリフレッシュするためにこのように見えるレーキタスクを使用します:

'action_controller / integration'が必要ActionController :: Base :: expire_page( "/ sitemap.xml")app = ActionController ::統合:: Session.new app.host = "notexample.com" app.get( "/ sitemap.xml" 「)


2


この方法でプリロードする - 一般に、太平洋標準時の午後10時から東部標準時の午前6時までに開始するcronジョブを使用すると、サイトの負荷を分散するのに適した方法です。

テストでこれをする簡単な方法については spider_test railsプラグインをチェックしてください。

上記のwgetを使用する予定の場合は、負荷を抑えるために—​level =、 - no-parent、--wait = SECONDS、--waitretry = SECONDSの各オプションを追加します。診断または分析用のヘッダー応答(必要に応じて/ tmpからパスを変更します)

wget -r --level = 5 --no-parent --delete-after \ --wait = 2 --waitretry = 10 \  - サーバー応答\ --append-output = / tmp / spidering-`日付" %Y%m%d "` .log 'http://whatever.com/~popular/page/'


1


私は、サイトのすべての主要分野が利用可能であることを確認する統合テストを設定しました(合計で数百ページ)。 データを変更するようなことは何もしません - 単にページとフォームを取得するだけです。

プロダクションインスタンスをデプロイするときには現在実行していませんが、今は言及しています - 実際には良い考えかもしれません。

もう1つの方法は、サイトマップに表示されているすべてのページをプルすることです(ある場合は、それを使用する必要があります)。 それを行うgem / rakeスクリプトを書くのは本当に簡単なはずです。