ASP.NET Core IDistributedCacheを使用した応答キャッシュ
ASP.NET Core は、大阪で 応答キャッシング これにより、将来のリクエストのためにクライアントリクエストのサーバー応答をキャッシュできます。
応答キャッシュは、応答がキャッシュから提供されるため、アプリケーションのパフォーマンスを向上させます。 さらに、同じリクエストを再度処理して応答を生成する必要がないため、サーバーの処理負荷が軽減されます。
Note
依存関係を使用した応答キャッシュに関する詳細オプションについては、次のサイトを参照してください。 ASP.NET Core 応答キャッシング.
IDistributedCache で応答キャッシュを使用するのはどのような場合ですか?
応答キャッシュを使用すると、静的で変更頻度がほとんどないアプリケーション項目をキャッシュすることができます。 これには、CSS/JavaScript ファイル、メディア、または Web ページのメタデータが含まれます。 したがって、サーバーにコンテンツを再リクエストする代わりに、このデータをキャッシュからフェッチできます。
応答キャッシングオプション
HTTPS ベースのキャッシュ
Web ブラウザ側のクライアント上のデータをキャッシュします。 これにより、後続のリクエストは Web サーバーではなくキャッシュで処理されるため、クライアントが Web サーバーに対して行うリクエストの数が減少します。 ただし、応答がブラウザーにキャッシュされると、割り当てられたキャッシュ時間が経過した場合にのみ期限切れになり、必要なときにクリアすることはできません。
インメモリキャッシング
ASPを使用して、サーバーのメモリにデータをキャッシュします.NET Core独自の内部キャッシュ プロバイダー。 このオプションは、ASP として応答をキャッシュする場合により柔軟です。.NET Core は、大阪で キャッシュタグヘルパー これにより、タグを追加して、MVC アプリケーションのどのビューをキャッシュするかを指定できるようになります。 これは InProc であるため、必要に応じて ASP.NET エンジンを再起動してキャッシュをクリアできます。
分散キャッシング
アプリケーションが Web ファームでホストされている場合、データをメモリ内にキャッシュします。 キャッシュは Web ファームのすべてのサーバーに分散され、要求されたデータがキャッシュ内にあればどのサーバーでもクライアントに応答できます。 インメモリキャッシュと同様に、 分散キャッシュタグヘルパー キャッシュする必要がある正確なビューを指定できます。 ここが NCache IDistributedCache インターフェイスを介して応答キャッシュの分散キャッシュとして使用できるため、機能します。さらに、キャッシュはスケーラブルであり、必要に応じて項目をキャッシュから削除できるため、アプリケーションの制御がさらに拡張されます。
使い方 NCache 応答キャッシング用
使用するには NCache 応答キャッシュの分散キャッシュとして、 NCache サービスとミドルウェアを構成するための独自の拡張メソッドを提供します。
前提条件
- 次のNuGetパッケージをアプリケーションにインストールします。
- 利用するには NCacheの応答キャッシュ用のメソッドには、アプリケーションに次の名前空間が含まれます。
- キャッシュが実行されている必要があります。
- APIの詳細については、以下を参照してください。 応答キャッシュの追加.
- 追加するデータが シリアライズ可能.
- 操作がフェイルセーフであることを保証するために、で説明されているように、アプリケーション内の潜在的な例外を処理することをお勧めします。 失敗の処理.
- 目に見えない例外を処理するには、を参照してください。 トラブルシューティング のセクションから無料でダウンロードできます。
応答キャッシングサービスの構成
ASP.NET Core は、応答キャッシュ用の独自のミドルウェアを提供します。 これは、次のコマンドを使用してサービス コレクションに追加する必要があります。 応答キャッシュの追加 方法。
Open スタートアップ.cs あなたのプロジェクトの。
ConfigureServices
メソッド、次のサービスを追加します。
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
// Remaining services here
}
構成 NCache 分散キャッシュとして
NCache IDistributedCache を通じてカスタム メソッドを提供し、ASP.NET アプリケーションの分散キャッシュとして自身を構成します。これにはキャッシュ名のみが必要です NCache MVC コンテンツを保存するためのオプションの構成。
方法1:AppSettings.jsonでキャッシュ構成を指定する
キャッシュ構成は、の個別のセクションとして追加できます。 アプリ設定.json あなたのアプリケーションの。 次の例では、セクションを追加します NCacheSettings
キャッシュ名を構成します。 登録したキャッシュに応じて名前を変更できます。
重要
指定されたキャッシュが実行されていることを確認してください。
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
}
. . .
キャッシュ構成を指定したら、 NCache サービスを追加して設定する必要があります NCache アプリケーションの分散キャッシュとして。
Open スタートアップ.cs あなたのプロジェクトの。
ConfigureServices
メソッド、次のサービスを追加します。AddNCacheDistributedCache
拡張メソッドはから構成を初期化します アプリ設定.json コンテナにサービスを追加して追加する前に NCache デフォルトの分散キャッシュとしての実装としてIDistributedCache
.
public void ConfigureServices(IServiceCollection services)
{
// Add NCache services to the container
services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
}
方法2:IOptionsで構成を指定する
構成を指定する別の方法は、構成設定を次のように提供することです。 IOptions
.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
services.AddNCacheDistributedCache(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.ExceptionsEnabled = true;
});
}
ビュークラスに分散キャッシュタグヘルパーを追加する
Once NCache サービスが応答キャッシュ用に構成されているため、キャッシュするコントローラー ビューの特定のコンテンツを指定できるようになりました。 ASP.NET Core は、大阪で 分散キャッシュタグヘルパー パラメータを含むタグを ビュー これにより、マークされたコンテンツが設定されたキャッシュにキャッシュされます。
次の例では、 <distributed-cache>
のコンテンツにタグを付ける ビュー -> について.cshtml さまざまなパラメーターを使用して。 アプリを更新すると、コンテンツ、通常アイテムが変更されます DateTime.Now
一方、タグ付けされたコンテンツはキャッシュされたまま静的なままになります。
expires-after
属性は、コンテンツの絶対有効期限を指定します。 このアイテムは 10 秒が経過するとキャッシュから削除されます。 ただし、アプリケーションが更新されると、項目はキャッシュに再ロードされます。name
属性は、タグヘルパーの各インスタンスのキャッシュの一意の識別子です。vary-by
属性は、URL 内のクエリ文字列がこのタグで指定された値と同じになるまで、アイテムをキャッシュに保持します。
パラメータの詳細については、「 タグヘルパーに関するMicrosoftのドキュメント 先に進む前に。
アプリケーションが実行されると、次の方法でキャッシュ統計を監視できます。 NCache 管理センター/NCache Enterprise の場合は Monitor、Professional の場合は PerfMon Counters。
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p> The value for this item will change everytime the application is refreshed.</p>
<div>@DateTime.Now.ToString()</div><br />
<p>The value for this item will be static and remain in the cache forever, unless cache is cleared.</p>
<distributed-cache name="Key:1" >
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static upon refreshing the application, but it will expire after 10 seconds.</p>
<distributed-cache name="Key:2" expires-after ="TimeSpan.FromSeconds(10)">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static and will only be removed from cache if the "vary-by" value is changed.</p>
<distributed-cache name="Key:3" vary-by ="test">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
その他のリソース
NCache 応答キャッシュのサンプル アプリケーションを提供します。 GitHubの.
も参照してください
。ネット: Alachisoft.NCache.ResponseCaching; 名前空間