2011-12-24 4 views
1

IIS 7.5で動作し、ASP.NET MVC 3で構築されたウェブサイトがあるとしましょう。また、このWebサイトには製品のためのユニークなページがたくさんあり、そのページのすべてが24時間メモリにキャッシュされているとします。出力キャッシュのメリットとなる他のページもあります。ウェブサイトをキックオフしてアウトプットキャッシングを行うための周知のアプローチ

ここまではすべて問題ありません。新しい更新プログラムをIISに展開すると、プールがリサイクルされ、すべてのキャッシュが削除されます。

だから、私は基本的には1つのことを行うコンソールアプリケーションを構築することを考えています:行くし、ウェブサイトのすべての単一のページを消費します。

これはこのようなことですか?そのための方法はありますか?

+0

なぜですか?高価なページの初期構成はキャッシュしておきたいのですか? – rene

+0

@reneはい、私はプロダクションに行くとすぐにキャッシュされるように、製品ページごとにデータベースを呼び出す作業をしています。 – tugberk

+1

私はbotllenecksの解決に私の開発努力を費やすでしょう。あなたが望むものを達成するために:wget http://www.gnu.org/software/wget/を見てください。特定のページに行くために、コマンドスクリプトとリストのproductidを組み合わせてください。 – rene

答えて

2

この問題に対処する方法はたくさんあります。いくつか:

  1. 必要なテーブルをRAMに読み込むクエリを発行してSQL Serverでデータをプリキャッシュします。もちろん、表に合わせて十分なRAMが必要です。特定の時刻にSQL Agentからタスクを実行できます。
  2. 使用.NET 4.0アプリケーションの自動起動およびGlobal.asaxの
  3. におけるキャッシュプリ温暖化クラス
  4. 利用のApplication_Start():
  5. は、AppFabricの(潜在的な頭痛の警告)として、分散キャッシュ中間層を追加します。加えて、必要なデータ構造で出力キャッシュに加えて
  6. 使用ASP.NETオブジェクトキャッシュを読み込んで、あなたのアプリでバックグラウンドスレッド、および
  7. 上記のいずれかの方法を使用して、プリロードオブジェクトキャッシュを起動するか、または
  8. バックグラウンドスレッドまたはキャッシュウォーマーからDBクエリを発行する代わりに、WebRequestクラスを使用してアプリ内の各ページのコピーを取得すると、出力キャッシュにロードされます。
  9. 特定の時刻にリサイクルするようにAppPoolを設定し、特定の時刻に実行されるWindowsスケジュールタスクその後、ページが読み込まれるようになります。
1

MicrosoftのAppFabricを参照してください。これは分散キャッシュであり、キャッシュされた要素はサイトのリサイクル時に存続します。

+0

私もそれについて考えました。私はそれを深く確認します。 – tugberk

+0

Windows Azure AppFabricしか使用できないのですか? – tugberk

+0

他にもMemCachedとRedisがありますが、私はそれらを試したことはありません。 –

関連する問題