ASP.NETWebアプリケーションに必要な非常に大量のデータの最初のバッチがあります。これまで(実際には2年間!)、Page_Loadで実行したり、ViewStateまたはSessionに保存したりすることができないほどコストのかかるものは何もありませんでした。しかし今、私はかなり静的なままで(最大で1日1回更新される)オブジェクトのリストが必要であり、約5000個のオブジェクトが含まれています。Page_Loadで毎回ビルドすると、ロード時間が明らかにヒットします。
キャッシングに関するいくつかのグーグルは、のようなものを使用したいくつかの非常に基本的な例を示していますCache["myStuff"] = myObject;
、そしてそれはすべてうまくいっています。ただし、アプリケーションがアクセスされているか使用されているかに関係なく、特定の時間に更新を実行するようにWebアプリケーションを設定できる方法があるかどうかを知りたいです。
たとえば、このプロセスでリストを更新して、誰も何も使用していない午前4時のように1日1回実行するようにします。たとえば、午後の1日目に、Page_Loadはキャッシュされたオブジェクトを取得するようにチェックしますが、nullに戻るため、その場合は、弾丸をかみ、1日目の残りのリストをリクエスト/ビルドして、キャッシュに保存します。 。1日目の残りの期間中、オブジェクトはキャッシュ内にあり、まだ有効であるため、誰もオブジェクトを作成する必要はありません。
1日目が終了し、2日目は午前4時です。誰もページを使用していません。1日目からキャッシュに保存されていたオブジェクトを削除して再構築し、午前中にオフィスに到着したときに、最初にページにアクセスした人が今日のリストを作成する必要がないようにします。すでに完了しています。
私が持っている唯一のアイデアは、Windowsのスケジュールされたタスクなどで実行されるコンソールアプリケーションの作成を検討することです。しかし、それでも、そのような外部アプリケーションからASP.NETWebアプリケーションとどのように対話できるかはわかりません。
うまくいけば、私は理にかなっています。私が達成したいことは可能でさえありますか?