2013-09-21 2 views
22

MVC webAPIを作成して、ドロップダウンボックスにバインドされた値を返すか、Webサイトで先読みのテキストボックスの結果として使用される値を返します。 APIをヒットするたびにデータベースリクエストを実行する必要はありません。メモリ内にアプリケーションデータをキャッシュする:MVC Web API

私はMemoryCacheクラスを使用しようとしています。最初のリクエストが来たときにキャッシュにデータを入れることができますが、APIの最初のリクエストが他のリクエストよりも遅くならないようにします。私の質問は:WebAPIが最初に起動したときに自動的にキャッシュにデータを入れる方法はありますか?私はそこに "App_Start"フォルダがあることを知っています、多分私はここに何かを投げますか?

最初の人口の後、おそらく必要に応じてキャッシュを更新するための毎時/毎日のリクエストを実行します。

MemoryCache: http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx

UDPATE

は、以下のエラの答えは基本的に私はちょうどGlobal.asaxのの能力を見るために必要な、トリックをしました。 ここで簡単に助けてくれてありがとう、これは別のキャッシングタイプの長所/短所について私に別の質問をスピンアップしています。

Pros/Cons of different ASP.NET Caching Options

答えて

22

あなたはリソースを初期化するためのGlobal.asax appplication開始メソッドを使用することができます。 基本的にアプリケーション全体で使用されるリソース。

次のリンクは、より多くの情報を見つけるためのお手伝いをする必要があります http://www.asp.net/web-forms/tutorials/data-access/caching-data/caching-data-at-application-startup-cs

ヒント: あなたは(あなたが/スレッドウェブコンテキスト内で何かをキャッシュする場合は通常の場合)、プロセスのキャッシュに使用する場合は、中に保ちますWebアプリケーションがIISによって制御されていることに注意してください。 標準のIIS構成では、ユーザー要求を処理する必要がない場合、20分後にWebアプリケーションがシャットダウンされます。 これは、メモリ内にあるリソースが解放されることを意味します。

これが発生すると、次回ユーザーがWebアプリケーションにアクセスするときに、IISがWebアプリケーションを再初期化するため、グローバルasaxアプリケーションの開始が再度実行されます。 この現象を回避するには、アプリケーションプールのアイドルタイムアウトが20分後にタイムアウトしないように構成するか、または、別のキャッシュ戦略(永続キャッシュ、分散キャッシュなど)を使用します。

はここにあなたがより多くの情報を見つけることができ、このためにIISを設定するには: http://brad.kingsleyblog.com/IIS7-Application-Pool-Idle-Time-out-Settings/

+0

おかげで再び応答を!私は余分な情報に感謝します。私が尋ねた新しい質問にあなたが持っている可能性のある追加のキャッシング情報を投稿しても構いません。私は絶対にIISワーカーのタイムアウトを考慮する必要があります – vesuvious

+0

または15分ごとにサイトにpingを実行する "ハートビート"サービスを設定できます。私の計画をアップグレードしない限り、私のクラウドホスティングサービスはidle_timeoutを20分から変更しないため、私はBinaryCanary.com(無料)を使用しています。 – ganders

関連する問題