保存してキャッシュから取得する必要がある大きなオブジェクトがいくつかあります。これらのオブジェクトのサイズは約 1 ~ 2 MB です。
有効にして実行するとlocalCache
、取得に数ミリ秒しかかかりませんが、有効にしないと、一貫して約 3 秒かかります。
Azure インロール キャッシュ (コロケート) を使用しています。
localCache を有効にしないと、なぜこんなに遅くなるのか、誰かが光を当てることができますか?
保存してキャッシュから取得する必要がある大きなオブジェクトがいくつかあります。これらのオブジェクトのサイズは約 1 ~ 2 MB です。
有効にして実行するとlocalCache
、取得に数ミリ秒しかかかりませんが、有効にしないと、一貫して約 3 秒かかります。
Azure インロール キャッシュ (コロケート) を使用しています。
localCache を有効にしないと、なぜこんなに遅くなるのか、誰かが光を当てることができますか?
LocalCache は、プロセスに対してローカル、つまりアプリケーションのプロセス メモリ内にあります。LocalCache が有効になっている場合、キャッシュからフェッチされたオブジェクトも LocalCache に保存されます。そのオブジェクトに対する次のすべてのリクエストは、その LocalCache から処理されます (アウト プロセス キャッシュから取得する必要はありません)。ただし、最初のオブジェクトの取得には時間がかかります。
MSDNによると:
ローカル キャッシュが有効な場合、キャッシュ クライアントはオブジェクトへの参照をローカルに保存します。これにより、オブジェクトはクライアント アプリケーションのメモリ内でアクティブなままになります。アプリケーションがオブジェクトを要求すると、キャッシュ クライアントはまずオブジェクトがローカル キャッシュに存在するかどうかを確認します。その場合、オブジェクトへの参照は、サーバーに接続せずにすぐに返されます。存在しない場合、オブジェクトはサーバーから取得されます。次に、キャッシュ クライアントはオブジェクトを逆シリアル化し、この新しく取得したオブジェクトへの参照をローカル キャッシュに格納します。クライアント アプリケーションは、この同じオブジェクトを使用します。
一方、ローカル キャッシュが無効になっている場合は、すべての取得要求がアウトプロセス キャッシュに送信されるため、毎回外部プロセスのメモリからオブジェクトがフェッチされます。