個別のデータベース値を持ついくつかのドロップダウンを含む検索ページに取り組んでいます。キャッシング技術の調査を開始し、いくつかの可能な解決策に出くわしました
- 出力キャッシング
- HttpContext.Cache
さまざまなタイプのキャッシングについて詳しく読んでいくうちに、このアプリケーションにはメトリクス ページもあり、検索ページから同じドロップダウン メニューを利用できることを思い出しました。検索ページのソリューションではなく、サイト全体のソリューションが必要です。
どちらの場合も、個別の値を取得する方法はほぼ同じです。さまざまな「利用可能な」フィールドを持つViewModelがあります。これらのフィールドは、コンストラクターで設定されます。
public class SearchViewModel
{
public AvailableSites {set;get;}
public SearchViewModel()
{
AvailableSites = db.SomeTable.Select(s => s.Site).Distinct();
}
}
モデルがこのように設定されている場合、ユーザーが検索ページまたはメトリック ページにアクセスするたびに、アプリケーションはデータベースにアクセスしてドロップダウン メニューにデータを入力する必要があります。キャッシュは、データベースとネットワークにかかる負荷を大幅に軽減します。
OutputCache はコントローラーのアクションでのみ機能するように見えるので、それは問題外のようです。
個別クエリの結果が変わることはほとんどありません。これは、HttpContext を使用してキャッシュしたいものですか? この場合、どのタイプのキャッシングが最適でしょうか?
また、これを MetricBase (各メトリック VM がこれから継承する) と SearchViewModel に統合する最良の方法は何でしょうか? この状況では、継承はほとんどやり過ぎのように思えます。クラスをそのまま含めて、private AvailableValue Values {set;get;}
経由でアクセスしますValues.AvailableSites
か?