Microsoft ASP.NET出力キャッシュ ASP.NET ページまたはユーザー コントロールのレンダリングされたコンテンツを指定された期間キャッシュする機能を提供します。 これにより、ASP.NET アプリケーションは、ページの再レンダリングや再実行の代わりに、後続のすべての要求をキャッシュから処理できるようになります。
追加します <% @OutputCache %> ASP.NET 出力キャッシュを使用するためのページ上のディレクティブ。
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
ASP.NET 出力キャッシュは、特にページの変更よりもアクセスの方が多く、キャッシュからページを提供する場合に非常に便利な機能です。 これにより、ページの再実行が回避され、特にページに大量の負荷の高いデータベース操作が含まれる場合に、高価なデータベースの移動が削減され、アプリケーションのパフォーマンスが向上します。 これにより、アプリケーションのスケーラビリティも向上します。これは、データベース操作に関係するページやリクエストが何百万もある場合、一般にデータベースがスケーラビリティのボトルネックになるためです。
Microsoft Azure環境におけるASP.NET出力キャッシュの問題
Microsoft Azure で出力キャッシュを使用すると、ページ出力はデフォルトで Microsoft Azure Web ロール内の InProc として保存されます。 これに関する最初の問題は、Web ロール インスタンスで使用できるメモリが制限されるため、大量のページ出力データをキャッシュするときにメモリ不足の問題が発生する可能性があることです。 もう XNUMX つの問題は、アプリケーションが複数の負荷分散された Microsoft Azure Web ロール インスタンスで実行されていることです。 次のリクエストは別の Web ロール インスタンスに送信され、このインスタンスにも ASP.NET 出力キャッシュ データの新しいコピーが作成される可能性があります。 各 Web ロール インスタンスのページ出力の冗長コピーは、大量の余分なメモリを消費します。
Microsoft Azure Web ロール インスタンスも、メンテナンスとパッチ適用のために非常に頻繁にリサイクルされます。 これが発生すると、すべてのページ出力が失われ、すべてのページを再実行してページの出力キャッシュを再設定する必要があり、Azure アプリケーションのパフォーマンスに悪影響を及ぼします。
Microsoft Azure での出力キャッシュの問題を解決するには?
Microsoft Azure でこれらすべての問題を解決できる方法の 4.0 つは、プロセス外で実行され、すべての Microsoft Azure Web ロール インスタンスの共通ストアである分散キャッシュを使用することです。 ASP.NET XNUMX では、開発者が任意の分散キャッシュを ASP.NET 出力キャッシュ ストアとして使用できるようにする拡張ポイントが導入されました。
分散キャッシュはページ出力用のすべての Microsoft Azure Web ロールで共有されるため、個々の Web ロール インスタンス内で冗長なコピーが作成されることはありません。 Microsoft Azure Web ロールは純粋にステートレスになるため、Web ロールがリサイクルされてもデータが失われることはありません。 すべてのキャッシュ サーバーのメモリ リソースをプールして、大量のデータを分散キャッシュにキャッシュできます。 さらに、分散キャッシュにより、各 Microsoft Azure Web ロール インスタンスでデータベース呼び出しを伴うページを個別に実行する必要がなくなるため、データベースの負荷が軽減されます。
NCache Azureの場合は、 .NET 用のインメモリ分散キャッシュ Microsoft Azure クラウドにデプロイされたアプリケーション。 NCache for Azure には、ASP.NET ページ出力を保存し、上記の問題をすべて解決するために使用できる ASP.NET 出力キャッシュ プロバイダーが実装されました。 さらに、デプロイすると、 NCache として Azure キャッシュ サービス レプリケーションによりデータの信頼性が提供されるだけでなく、アプリケーションのスケーラビリティも向上します。
使用方法 NCache Azure ASP.NET 出力キャッシュ プロバイダー用
あなたが使用することができます NCache Microsoft Azure アプリケーションのコードを変更することなく、ASP.NET で出力キャッシュを行う場合は次のようになります。
ステップ1: の参照を追加 NCache Azure 出力キャッシュ プロバイダー アセンブリの場合。
ファイル:web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
ステップ2: 登録する NCache Azure 出力キャッシュ プロバイダーの場合構成> セクションを開き、キャッシュ設定を提供します。
ファイル:web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
ステップ3: キャッシュするページに ASP.NET 出力キャッシュ ディレクティブを追加します。
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
ドキュメント: ASP.NET 出力キャッシュの使用 NCache
NCache Azure ASP.NET 出力キャッシュ機能の場合
NCache for Azure は、Microsoft Azure の出力キャッシュをキャッシュおよび管理するための豊富な機能セットを提供します。 以下にそれらのリストを示します。
- ページ出力の期間を指定します。 NCache for Azure では、ASP.NET ページ出力をキャッシュする期間を指定できます。
- ページのさまざまなバージョンをキャッシュします。 NCache for Azure では、VaryByParam、VaryByCustom、VaryByControl などのさまざまな ASP.NET 出力キャッシュ ディレクティブに応じて、さまざまなバージョンのページをキャッシュできます。 ページ要求に対して別のパラメータを受信した場合、ページ出力の別のバージョンが分散キャッシュに保存されます。
- ページのさまざまな部分をキャッシュします。 ページ全体をキャッシュするのではなく、ページの一部のみを指定することもできます。 これは、ページの静的部分のみをキャッシュし、実行時にレンダリングされる動的部分を残す状況向けです。
- ASP.NET 出力キャッシュ用のカスタム フックを実装します。 NCache for Azure を使用すると、ページ出力用のカスタム フック (インターフェイス) を実装して登録できます。 これは、次のようないくつかの拡張属性をページ出力に添付するためです。 NCache Azure データベースの依存関係、タグ、グループなど。
まとめ
これまで見てきたように、分散キャッシュを使用すると、ASP.NET ページ出力をキャッシュできるため、複数の負荷分散された Azure Web ロールに関するアプリケーションの問題が解決されます。 NCache は、ASP.NET アプリケーションのパフォーマンスのスケーラビリティと信頼性の向上に役立つ Azure ASP.NET 出力キャッシュ プロバイダーです。