展開の「キャッシュをウォームアップ」
-
23-08-2019 - |
質問
私は疑問に思って。
私はあまり変化していないいくつかの大部分は静的サイトを持っている、とhtmlが既に書かれていた場合より速く実行します、代わりにサイトをヒットする1人の訪問者を必要とする。
これを作成するのではなく、自分自身(簡単なようだが、それは優先順位をlowwwww)それが既に存在しているのでしょうか?
解決
私は、サイトの主要分野のすべてを確認する統合テストを設定しているが(全部で数百ページ)利用可能です。彼らは、データを変更する何もしない - ちょうどページとフォームを引き戻す
。私は私の本番インスタンスを展開するとき、私は現在、それらを実行していないが、今、あなたはそれを言及 - それは実際には良い考えかもしれ
。別の方法としては、(あなたは1を持っている場合、あなたはおそらくべき、)サイトマップに表示されるすべてのページを引くことであろう。それを行うの宝石/すくいスクリプトを書くことは本当に簡単なはずです。
他のヒント
あなたはサイトをスパイダーするwget
または別のプログラムを使用することができます。実際には、シナリオのこの種は、そのマニュアルページ内の用途の一つとして言及されます:
このオプションでは、そうした後、それはダウンロードごとに1つのファイルを削除するためにはWgetに伝えます。それは例えば、プロキシ経由で人気のあるページをプリフェッチするのに便利です:ます。
wget -r -nd --delete-after http://whatever.com/~popular/page/
-rオプションは、再帰的に取得し、ディレクトリを作成しないようにすることです-NDます。
私は毎晩私のページのキャッシュされたサイトマップを更新するために、このようになります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する
この方法のプリロード - 一般的に、cronジョブとに午後10時、太平洋で開始し、午前6時東部時間で終了するようにすると - 。あなたのサイトのロード・バランスを取るための素晴らしい方法です。
テストでこれを行うための簡単な方法のために spider_testレールプラグインをチェックます。
あなたの負荷を絞るために、そしてあなたにもログに記録することがあります--level =、--no-親、--wait = SECONDSと--waitretry = SECONDSオプション追加、上記のwgetを使用するつもりなら及び(必要に応じて/ 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/'