Parâmetros de configuração para provedor de cache de saída de página ASP.NET para o serviço de cache gerenciado do Azure

Importante

A Microsoft recomenda que todos os novos desenvolvimentos usem o Cache Redis do Azure. Para obter documentação e diretrizes atuais sobre como escolher uma oferta de Cache do Azure, confira qual oferta do Cache do Azure é ideal para mim?

Este tópico aborda as configurações do provedor de cache de saída do Azure Serviço de Cache Gerenciado para ASP.NET. Essas configurações são especificadas na seção provedores do elemento outputCache no arquivo web.config.

Parâmetros de configuração de cache de saída

Atributo Descrição

nome (obrigatório)

O nome "amigável" do provedor usado pelo elemento outputCache para fazer referência ao provedor.

tipo (obrigatório)

Cadeia de caracteres do tipo .NET Framework do provedor. Consulte a observação a seguir sobre o valor necessário.

cacheName (obrigatório)

O nome do cache do Azure. Isso deve ser definido como “default”.

dataCacheClientName (opcional)

O nome da seção dataCacheClient a ser usada na seção de configuração dataCacheClients . Esse atributo só será necessário se várias seções dataCacheClient forem especificadas no arquivo web.config. Por padrão, o provedor usará a seção dataCacheClient nomeada “default”.

applicationName (opcional)

Um valor de cadeia de caracteres usado pelo provedor ao criar chaves de cache para armazenar dados de cache de saída. O padrão é uma cadeia de caracteres vazia. Quando esse atributo não é definido, o provedor usa o valor de HttpRuntime.AppDomainAppId como parte das chaves de cache que usa internamente. Diferentemente do recurso de estado da sessão, não é aconselhável compartilhar dados de cache de saída entre diferentes aplicativos ASP.NET (por exemplo, /contoso e /AdventureWorks não podem compartilhar dados de cache de saída). Em vez disso, certifique-se de que todas as diferentes instâncias físicas do mesmo aplicativo tenham acesso aos mesmos dados de cache de saída. Isso pode ser feito de duas maneiras diferentes:

  • Se o atributo do provedor applicationName não estiver definido explicitamente, HttpRuntime.AppDomainAppId será usado internamente pelo provedor ao construir chaves de cache. Isso significa que cada instância física do mesmo aplicativo (ou seja, cada servidor web que hospede o aplicativo /contoso) terá que ser instalada no IIS com exatamente o mesmo caminho de metabase. Confira https://support.microsoft.com/kb/325056uma explicação de como os caminhos de metabase são usados com os provedores de estado de sessão SQL Server e fora do processo. Embora o estado da sessão seja um recurso diferente, o mesmo problema existe com a manutenção de caminhos de metabase em sincronia. Isso se aplica ao cache de saída quando o atributo applicationName não foi definido no arquivo web.config.

  • Uma abordagem mais fácil é que cada instância do mesmo aplicativo ASP.NET (por exemplo, em cada servidor Web que hospeda o aplicativo /contoso) use o mesmo atributo applicationName no arquivo web.config. Isso permite que diferentes instâncias físicas do mesmo aplicativo leiam e gravem os mesmos dados de cache de saída. Nesse caso, o provedor não usa AppDomainAppId ao construir chaves de cache e, portanto, não há risco de caminhos de metabase incompatíveis.

retryInterval (opcional)

Um intervalo de tempo indicando a duração da espera entre novas tentativas caso ocorra um erro de comunicação com o cache. O formato de cadeia de caracteres a ser usado para esse valor é "HH:MM:SS". Por padrão, o provedor permanecerá inativo por um segundo.

retryCount (opcional)

Um valor inteiro que informa ao provedor o número de novas tentativas em caso de falha de comunicação com o cache. Observe que nem todas as operações podem ser repetidas. O valor padrão é três novas tentativas. O provedor dorme para o tempo de retryInterval configurado entre cada tentativa de repetição.

Observação

O atributo de tipo deve ser definido como “Microsoft.Web.DistributedCache.DistributedCacheOutputCacheProvider, Microsoft.Web.DistributedCache”.

Exemplo

<!-- Non-cache sections omitted for space -->
<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 -->
    <!--Uncomment this section to use Azure Caching for output caching-->
    <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">
      <!--To use the in-role flavor of Azure Caching, set identifier to be the cache cluster role name -->
      <!--To use the Azure Caching Service, set identifier to be the endpoint of the cache cluster -->
      <autoDiscover
        isEnabled="true" 
        identifier="[Cache role name or Service Endpoint]" />
      <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
      <!--Use this section to specify security settings for connecting to your cache. 
          This section is not required if your cache is hosted on a role that is a part 
          of your cloud service. -->
      <!--<securityProperties mode="Message" sslEnabled="false">
        <messageSecurity authorizationInfo="[Authentication Key]" />
      </securityProperties>-->
    </dataCacheClient>
    <cacheDiagnostics>
      <crashDump dumpLevel="Off" dumpStorageQuotaInMB="100" />
    </cacheDiagnostics>
  </dataCacheClients>
</configuration>

Observação

A seção cacheDiagnostics só é adicionada pelo pacote NuGet de cache a clientes de função web ASP.NET. Para obter mais informações, consulte Sobre ClientDiagnosticLevel para Serviço de Cache Gerenciado do Azure.

Consulte Também

Conceitos

Provedor de cache de saída de página para o serviço de cache gerenciado do Azure