このドキュメントはアーカイブされており、メンテナンスされていません。

Azure In-Role Cache での ASP.NET 出力キャッシュ プロバイダーの構成設定

更新日: 2015年8月

Important重要
新しい開発にはすべて、Azure Redis Cache を使用することをお勧めします。最新の資料と Azure Cache の種類の選択方法については、「Redis Cache のサービス内容と適切なサイズの選択」をご覧ください。

このトピックでは、ASP.NET の Azure 出力キャッシュ プロバイダーの構成設定を取り上げます。これらの設定は、web.config ファイル内の providers 要素の outputCache セクションに指定します。

 

属性 説明

name (必須)

プロバイダーを参照するために、outputCache 要素が使用するプロバイダーの「わかりやすい」名前です。

type (必須)

プロバイダーの .NET Framework 型文字列。必要な値については、後述の注を参照してください。

cacheName (必須)

Azure キャッシュの名前。“default” に設定する必要があります。

dataCacheClientName (省略可能)

dataCacheClients 構成セクションから使用する dataCacheClient の名前。この属性は、web.config ファイルで複数の dataCacheClient セクションを指定する場合にのみ必要です。既定で、プロバイダーは “default” という dataCacheClient セクションを使用します。

applicationName (省略可能)

出力キャッシュ データを保存するためにキャッシュ キーを作成するときに、プロバイダーが使用する文字列値。既定値は空の文字列です。この属性を設定しない場合、プロバイダーは、内部的に使用するキャッシュ キーの一部として、HttpRuntime.AppDomainAppId の値を使用します。セッション状態機能とは異なり、通常は複数の ASP.NET アプリケーションで出力キャッシュ データを共有しません (たとえば、/contoso と /AdventureWorks は出力キャッシュ データを共有できません)。共有するのではなく、同じアプリケーションの複数の物理インスタンスが、いずれも同じ出力キャッシュ データにアクセスできるようにします。この場合、2 つの実行方法があります。

  • applicationName プロバイダー属性が明示的に設定されていない場合、プロバイダーはキャッシュ キーを構築するときに内部的に HttpRuntime.AppDomainAppId を使用します。つまり、同じアプリケーションの各物理インスタンス (言い換えると、/contoso アプリケーションをホストする各 Web サーバー) を、メタベース パスがまったく同じ IIS にインストールする必要があります。SQL Server とプロセス外のセッション状態プロバイダーでメタベース パスを使用する方法については、http://support.microsoft.com/kb/325056 を参照してください。セッション状態は異なる機能ですが、メタベース パスの同期状態を保つ場合と同じ問題があります。これは、applicationName 属性が web.config ファイルで設定されていない場合のキャッシュの出力に適用されます。

  • 簡単な解決方法は、同じ ASP.NET アプリケーションの各インスタンス (たとえば、/contoso アプリケーションをホストする各 Web サーバー) で、web.config ファイルで同じ applicationName 属性を使用することです。こうすることで、同じアプリケーションの複数の物理インスタンスが、同じ出力キャッシュ データの読み取りおよび書き込みを実行できるようになります。この場合、プロバイダーは、キャッシュ キーを構築するときに AppDomainAppId を使用しません。そのため、不一致のメタベース パスのリスクが発生することはありません。

retryInterval (省略可能)

キャッシュと通信するときにエラーが発生した場合、再試行の間に待機する時間。この値に使用する文字列の形式は "HH:MM:SS" です。既定で、プロバイダーは 1 秒間スリープ状態になります。

retryCount (省略可能)

キャッシュとの通信エラーが発生したときに、プロバイダーに再試行回数を通知する整数値。ただし、再試行できない操作もあります。再試行回数の既定値は 3 です。各再試行の間に、構成した retryInterval の時間、プロバイダーはスリープ状態になります。

noteメモ
type 属性は “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache” に設定する必要があります。

<configuration>
  <configSections>
    <section name="dataCacheClients" 
          type="Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core"
          allowLocation="true" allowDefinition="Everywhere" />
    <section name="cacheDiagnostics"
          type="Microsoft.ApplicationServer.Caching.AzureCommon.DiagnosticsConfigurationSection, Microsoft.ApplicationServer.Caching.AzureCommon"
          allowLocation="true" allowDefinition="Everywhere" />
  </configSections>
  <system.web>
    <!-- Azure Caching output caching provider -->
    <caching>
      <outputCache defaultProvider="AFCacheOutputCacheProvider">
        <providers>
          <add name="AFCacheOutputCacheProvider" 
            type="Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache" 
            cacheName="default" 
            dataCacheClientName="default" 
            applicationName="AFCacheOutputCache" />
        </providers>
      </outputCache>
    </caching>
  </system.web>
  <dataCacheClients>
    <dataCacheClient name="default">
      <autoDiscover isEnabled="true" identifier="CacheWorkerRole1" />
    </dataCacheClient>
  </dataCacheClients>
  <cacheDiagnostics>
    <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
  </cacheDiagnostics>
</configuration>

関連項目

表示: