ASP.NET Core Cache de resposta com IDistributedCache
ASP.NET Core fornece Cache de resposta que permite armazenar em cache a resposta do servidor de uma solicitação de cliente para solicitações futuras.
O cache de resposta aumenta o desempenho do aplicativo à medida que a resposta é fornecida pelo cache. Além disso, alivia a carga de processamento dos servidores, pois eles não precisam processar e gerar novamente uma resposta para a mesma solicitação.
Note
Para opções avançadas sobre cache de resposta usando dependência, vá para ASP.NET Core Cache de resposta.
Quando usar o cache de resposta com IDistributedCache?
O cache de resposta pode ser usado para armazenar em cache itens do aplicativo que são estáticos e têm muito pouca frequência de modificação. Isso inclui arquivos CSS/JavaScript, mídia ou metadados de uma página da web. Portanto, em vez de solicitar novamente o conteúdo ao servidor, esses dados podem ser obtidos do cache.
Opções de cache de resposta
Cache baseado em HTTPS
Armazena dados em cache no final do navegador da Web no cliente. Isso reduz o número de solicitações que um cliente faz ao servidor web, pois quaisquer solicitações subsequentes serão atendidas pelo cache em vez do servidor web. No entanto, uma vez que a resposta é armazenada em cache no navegador, ela só expirará quando o tempo de armazenamento em cache atribuído terminar e não poderá ser apagada quando necessário.
Cache na memória
Armazena dados em cache na memória do servidor, usando ASP.NET Corepróprio provedor de cache interno. Esta opção é mais flexível para armazenar respostas em cache como ASP.NET Core fornece Auxiliar de tags de cache que permite adicionar tags para especificar qual visualização do aplicativo MVC deve ser armazenada em cache. Como este é o InProc, você pode reiniciar o mecanismo ASP.NET para limpar o cache quando necessário.
Cache distribuído
Armazena dados em cache na memória, se o aplicativo estiver hospedado em um web farm. O cache é distribuído por todos os servidores do web farm e qualquer servidor pode responder ao cliente se os dados solicitados estiverem disponíveis no cache. Semelhante ao cache na memória, Auxiliar de tags de cache distribuído permite especificar visualizações exatas que precisam ser armazenadas em cache. É aqui que NCache entra em ação, pois pode ser usado como um cache distribuído para Response Caching por meio de sua interface IDistributedCache. Além disso, isso estende mais controle ao seu aplicativo, pois o cache é escalonável e os itens podem ser removidos do cache quando necessário.
utilização NCache para Cache de Resposta
Para utilizar o NCache como um cache distribuído para cache de resposta, NCache fornece seus próprios métodos de extensão para configurar serviços e middleware.
Pré-requisitos
- Instale os seguintes pacotes NuGet em seu aplicativo:
- Empresa: NCache.Microsoft.Extensões.Cache
- Profissional: NCache.Microsoft.Extensões.Caching.Professional
- Código aberto: NCache.Microsoft.Extensions.Caching.OpenSource
- Utilizar NCachedos métodos para cache de resposta, inclua o seguinte namespace em seu aplicativo:
- O cache deve estar em execução.
- Para detalhes da API, consulte: AddResponseCaching.
- Certifique-se de que os dados que estão sendo adicionados serializável.
- Para garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
- Para lidar com quaisquer exceções não vistas, consulte o guia de solução de problemas seção.
Configurar serviço de cache de resposta
ASP.NET Core fornece seu próprio middleware para cache de resposta. Isso deve ser adicionado à coleção de serviços usando o AddResponseCaching método.
Abra Inicialização.cs do seu projeto.
No
ConfigureServices
método, adicione o seguinte serviço:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
// Remaining services here
}
configurar NCache como um cache distribuído
NCache fornece métodos personalizados por meio de IDistributedCache para configurar-se como um cache distribuído para aplicativos ASP.NET. Isso requer apenas um nome de cache em NCache e quaisquer configurações opcionais para armazenar o conteúdo MVC.
Método 1: especifique a configuração de cache em AppSettings.json
As configurações de cache podem ser adicionadas como uma seção separada em Appsettings.json de sua aplicação. O exemplo a seguir adiciona uma seção NCacheSettings
que configura o nome do cache. Você pode alterar o nome de acordo com o seu cache cadastrado.
importante
Certifique-se de que o cache especificado esteja em execução.
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
}
. . .
Uma vez que a configuração de cache foi especificada, NCache serviços devem ser adicionados para configurar NCache como um cache distribuído no aplicativo.
Abra Inicialização.cs do seu projeto.
No
ConfigureServices
método, adicione os seguintes serviços:AddNCacheDistributedCache
método de extensão inicializa as configurações de Appsettings.json antes de adicionar os serviços ao contêiner e adiciona NCache como o cache distribuído padrão como uma implementação deIDistributedCache
.
public void ConfigureServices(IServiceCollection services)
{
// Add NCache services to the container
services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
}
Método 2: Especifique a configuração em IOptions
Outro método para especificar configurações é fornecer definições de configuração como IOptions
.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
services.AddNCacheDistributedCache(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.ExceptionsEnabled = true;
});
}
Adicionar Auxiliar de Marca de Cache Distribuído à Classe de Visualização
Uma vez NCache foram configurados para cache de resposta, agora você pode especificar o conteúdo específico das visualizações do controlador que deseja armazenar em cache. ASP.NET Core fornece Auxiliar de tags de cache distribuído para adicionar tags com parâmetros ao Visualizações que armazenará em cache o conteúdo marcado no cache configurado.
O exemplo a seguir adiciona o <distributed-cache>
marcar o conteúdo em Visualizações -> Sobre.cshtml com parâmetros variados. Ao atualizar o aplicativo, o conteúdo do Item Normal mudará de acordo com DateTime.Now
, enquanto o conteúdo marcado permanecerá estático enquanto é armazenado em cache.
A
expires-after
atributo especifica a expiração absoluta para o conteúdo. Este item será removido do cache após 10 segundos. Entretanto, se o aplicativo for atualizado, os itens serão recarregados no cache.A
name
atributo é o identificador exclusivo do cache para cada instância do auxiliar de tag.A
vary-by
O atributo mantém o item no cache até que a string de consulta no URL seja a mesma para o valor especificado nesta tag.
Para obter mais detalhes sobre os parâmetros, consulte o Documentação da Microsoft para Auxiliares de Marca antes de proceder.
Depois que o aplicativo for executado, você poderá monitorar as estatísticas do cache por meio do NCache Centro de Gestão/NCache Monitor para Empresa ou Contadores PerfMon para Profissional.
@{
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>
Recursos adicionais
NCache fornece um aplicativo de exemplo para cache de resposta em GitHub.
Veja também
.INTERNET: Alachisoft.NCache.ResponseCaching; espaço para nome.