キャッシングは、レイテンシーをメモリと交換することで、驚異的な効果を発揮します。悪魔は「効果的に構成すること」にあります。
重要なことは、アプリケーションで許容される動作を自分で特定することです。たとえば、フロント ページの「上位 3 件の投稿」が 1 分以内であれば問題ないでしょうか? 「現在オンラインのユーザー」リストが 30 秒以内であれば問題ありませんか? メイン ページの読み込みに 0.75 秒かかっても問題ありませんか、それとももっと速くする必要がありますか? これらの質問に対するあなたの回答によって、何をキャッシュすべきか、何をキャッシュすべきでないかが決まります。アプリケーションのプロファイルを作成して、実際のパフォーマンスのボトルネックがどこにあり、なぜ存在するのかを理解して、最適化/キャッシュの取り組みをどこに集中すべきかを理解します。
.Net アプリケーションで使用できるキャッシュには、さまざまな形式があります。 OutputCacheは単なる 1 つの形式です。
- アプリケーションレベルのキャッシング (アプリケーション内のすべてで共有 -
Application[Key])
- オブジェクト キャッシング (キャッシュ無効化コールバックで自動的に管理 -
Cache[Key])
- 出力キャッシュ (aspx ページ/パーツの生成された出力のキャッシュ -
OutputCacheプロパティ)
- リクエストごとのキャッシュ (単一のリクエスト中に計算されたデータをキャッシュする -
Context[key])
- セッション キャッシング (ユーザーのセッションに固有のデータをキャッシュする -
Session[key])
それらにはすべて長所と短所があり、適切に設計されたアプリケーションは、おそらくこれらの形式のキャッシングのほとんどまたはすべてを利用します。で考慮すべき点がいくつかある場合OutputCacheは、次のとおりです。
- 再利用できる可能性が高いため、ページ全体ではなくページの一部をキャッシュするようにしてください。のようなコンポーネントからページを構築すると、
UserControlここで役立ちます。
- 項目 ID ごとに異なるパラメーターなど、大きく変化する一連のパラメーターを使用する場合は注意してください
QueryString。使用頻度の低いキャッシュ コピーが大量に生成され、多くのメモリを消費するだけでメリットがほとんどないためです。
OutputCacheASPX マークアップの生成された出力を保存しているだけであることに注意してください。そのため、ユーザー入力に基づいてフォームが変化する動的ページでは、他のキャッシュ タイプと同様に機能しません。