Microsoft Cache de Saída ASP.NET fornece funcionalidade para armazenar em cache o conteúdo renderizado de páginas ASP.NET ou controles de usuário por uma duração especificada. Isso permite que seu aplicativo ASP.NET atenda a todas as solicitações subsequentes do cache em vez de renderizar novamente e executar novamente uma página.
Você adiciona o <% @OutputCache %> diretiva na página para usar o cache de saída ASP.NET.
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
O cache de saída do ASP.NET é um recurso muito útil, especialmente para situações em que uma página é acessada com mais frequência do que muda e você a atende a partir do cache. Isso melhora o desempenho do aplicativo evitando reexecuções de página e também reduzindo suas viagens caras ao banco de dados, especialmente quando a página envolve muitas operações pesadas de banco de dados. Isso também melhora a escalabilidade do aplicativo porque o banco de dados geralmente se torna um gargalo de escalabilidade quando há milhões dessas páginas e solicitações envolvendo operações de banco de dados.
Problemas com o cache de saída ASP.NET no ambiente do Microsoft Azure
Quando você usa o Cache de Saída no Microsoft Azure, a saída da página é armazenada como InProc em sua Função Web do Microsoft Azure por padrão. O primeiro problema com isso é que ele limita você à memória disponível em sua instância de função da Web e isso pode criar um problema de falta de memória quando você armazena em cache uma grande quantidade de dados de saída de página. Outro problema é que seu aplicativo é executado em várias instâncias de função Web do Microsoft Azure com balanceamento de carga. A próxima solicitação pode ir para outra instância de Web Role, que também cria uma nova cópia dos dados do ASP.NET Output Cache nessa instância. Essas cópias redundantes de saídas de página em cada instância de função Web consomem muita memória extra.
As instâncias de função Web do Microsoft Azure também são recicladas com bastante frequência para manutenção e aplicação de patches. Quando isso acontece, todas as saídas de página são perdidas e você terá que executar novamente todas as páginas para preencher novamente o Cache de Saída da página, que é um impacto negativo no desempenho do seu aplicativo do Azure.
Como resolver problemas de cache de saída no Microsoft Azure?
Uma maneira de resolver todos esses problemas no Microsoft Azure é usar um cache distribuído, que é executado fora do processo e é um armazenamento comum para todas as instâncias de função Web do Microsoft Azure. O ASP.NET 4.0 introduziu um ponto de extensibilidade que ajuda os desenvolvedores a usar qualquer cache distribuído de sua escolha como seu armazenamento de cache de saída ASP.NET.
O cache distribuído é compartilhado por todas as funções Web do Microsoft Azure para saídas de página para que não haja cópias redundantes feitas em instâncias de funções Web individuais. As funções Web do Microsoft Azure tornam-se puramente sem estado para que os dados nunca sejam perdidos quando as funções Web são recicladas. Você pode armazenar em cache uma grande quantidade de dados em cache distribuído agrupando recursos de memória de todos os servidores de cache. Além disso, o cache distribuído reduz a carga em seu banco de dados porque você não precisa passar por execuções de página envolvendo chamadas de banco de dados em cada instância de função Web do Microsoft Azure separadamente.
NCache para o Azure é um cache distribuído na memória para .NET aplicativos implantados na nuvem do Microsoft Azure. NCache for Azure implementou o provedor de cache de saída ASP.NET que você pode usar para armazenar a saída da página ASP.NET e resolver todos os problemas mencionados acima. Além disso, a implantação NCache como um Serviço de cache do Azure fornece confiabilidade de dados com replicação, além de melhorar a escalabilidade do aplicativo.
Como usar NCache para o provedor de cache de saída do Azure ASP.NET
Você pode usar NCache para Azure para cache de saída no ASP.NET como segue, sem qualquer alteração de código para seu aplicativo Microsoft Azure.
- Adicionar referência de NCache para o assembly do provedor de Cache de Saída do Azure.
Arquivo: web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
- Inscrições NCache para o provedor de cache de saída do Azure emconfiguração> seção e fornecer configurações de cache.
Arquivo: web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
- Adicione a diretiva ASP.NET Output Cache na página que você deseja armazenar em cache.
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
Documentação: Usando o cache de saída ASP.NET com NCache
NCache para recursos de cache de saída do Azure ASP.NET
NCache para Azure fornece um rico conjunto de recursos para armazenar em cache e gerenciar o cache de saída do Microsoft Azure. Abaixo segue uma lista deles:
- Especifique a duração da saída da página: NCache para o Azure permite especificar uma duração para a qual você deseja armazenar em cache a saída da página ASP.NET.
- Cache de diferentes versões de uma página: NCache para o Azure permite que você armazene em cache diferentes versões da página, dependendo das várias diretivas de cache de saída do ASP.NET, como VaryByParam, VaryByCustom, VaryByControl. Outra versão da saída da página é armazenada no cache distribuído se um parâmetro diferente for recebido para uma solicitação de página.
- Cache de diferentes partes de uma página: Você também pode especificar apenas partes da página em vez de armazenar em cache a página inteira. Isso é para situações em que você armazena em cache apenas a parte estática da página e deixa a parte dinâmica que é renderizada em tempo de execução.
- Implemente ganchos personalizados para cache de saída ASP.NET: NCache para Azure permite que você implemente e registre seus ganchos personalizados (interface) para saída de página. Isso é para anexar alguns atributos estendidos às saídas de sua página, como NCache para dependências de banco de dados do Azure, Tags, Grupos, etc.
Conclusão
Como você viu, o cache distribuído permite armazenar em cache as saídas da página ASP.NET, o que resolve seus problemas de aplicativo com várias funções Web do Azure com balanceamento de carga. NCache é um provedor de Cache de Saída ASP.NET do Azure que ajuda a melhorar a escalabilidade e a confiabilidade do desempenho do aplicativo ASP.NET.