Opciones de configuración de proveedor de caché de resultados de ASP.NET en Caché en rol de Azure

Importante

Microsoft recomienda todos los nuevos desarrollos que usen Azure Redis Cache. Para obtener documentación actual e instrucciones sobre cómo elegir una oferta de Azure Cache, consulte ¿Qué oferta de Azure Cache es adecuada para mí?

En este tema se tratan los valores de configuración del proveedor de caché de salida de Azure para ASP.NET. Esta configuración se especifica en la sección providers del elemento outputCache en el archivo web.config.

Opciones de configuración de la caché de resultados

Atributo Descripción

name (obligatorio)

Nombre "descriptivo" del proveedor utilizado por el elemento outputCache para hacer referencia al proveedor.

type (obligatorio)

Cadena de tipo .NET Framework para el proveedor. Vea la nota siguiente sobre el valor requerido.

cacheName (obligatorio)

Nombre de la caché de Azure. Debe establecerse en “default”.

dataCacheClientName (opcional)

Nombre de la sección dataCacheClient que se va a usar desde la sección de configuración dataCacheClients . Este atributo solo es necesario si se especifican varias secciones dataCacheClient en el archivo web.config. De forma predeterminada, el proveedor usará la sección dataCacheClient denominada “default”.

applicationName (opcional)

Valor de cadena que usa el proveedor al crear claves de caché para almacenar los datos de la caché de resultados. El valor predeterminado es una cadena vacía. Cuando este atributo no se establece, el proveedor usa el valor de HttpRuntime.AppDomainAppId como parte de las claves de caché que usa internamente. A diferencia de la característica de estado de sesión, no querrá compartir los datos de la caché de resultados entre las distintas aplicaciones ASP.NET (por ejemplo, /contoso y /adventureworks no pueden compartir los datos de la caché de resultados). En su lugar, asegúrese de que las instancias físicas diferentes de la misma aplicación tengan acceso todas a los mismos datos de la caché de resultados. Hay dos formas diferentes de lograrlo:

  • Si el atributo de proveedor applicationName no se establece explícitamente, el proveedor usa internamente HttpRuntime.AppDomainAppId al construir claves de caché. Esto hará que cada instancia física de la misma aplicación (es decir, cada servidor web que hospede la aplicación /contoso) deba instalarse en IIS exactamente con la misma ruta de metabase. Consulte https://support.microsoft.com/kb/325056para obtener una explicación de cómo se usan las rutas de acceso de metabase con los proveedores de estado de sesión fuera de proceso y SQL Server. Aunque el estado de sesión es una característica diferente, existe el mismo problema al mantener sincronizadas las rutas de acceso de metabase. Esto se aplica al almacenamiento en caché de salida cuando el atributo applicationName no se ha establecido en el archivo web.config.

  • Un enfoque más sencillo es para cada instancia de la misma aplicación de ASP.NET (por ejemplo, en cada servidor web que hospeda la aplicación /contoso) para usar el mismo atributo applicationName en el archivo web.config. Esto permite que distintas instancias físicas de la misma aplicación lean y escriban los mismos datos de la caché de resultados. En este caso, el proveedor no usa AppDomainAppId al construir claves de caché y, por tanto, no existe ningún riesgo de rutas de metabase no coincidedas.

retryInterval (opcional)

Intervalo de tiempo durante el cual se debe esperar entre reintentos si se produce un error al comunicarse con la caché. El formato de cadena que se usa con este valor es "HH:MM:SS". De forma predeterminada, el proveedor se suspenderá durante un segundo.

retryCount (opcional)

Valor entero que le indica al proveedor el número de reintentos en caso de error en la comunicación con la caché. Tenga en cuenta que no es posible recuperar todas las operaciones. El valor predeterminado son tres reintentos. El proveedor se suspende para el tiempo de reintentos configurado entre cada intento de reintento.

Nota

El atributo type debe establecerse en “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”.

Ejemplo

<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>

Consulte también

Conceptos

Proveedor de caché de resultados para Caché en rol de Azure