Introdução ao cache no ASP.NET

O armazenamento em cache no ASP.NET é a capacidade de armazenar uma página ou dados de um site na memória para acesso rápido. No ASP.NET, você não precisa atingir o servidor para a mesma resposta repetidamente. Armazene-o na memória do computador e busque-o mais rapidamente. Obviamente, isso funciona apenas com dados estáticos, porque os dados dinâmicos variam com cada solicitação feita ao servidor.

O que é o cache no ASP.Net?

A estrutura .Net também fornece o recurso de armazenamento em cache para que o desempenho do seu aplicativo possa ser aprimorado. Agora você pergunta, o ASP .Net é usado para criar páginas da Web dinâmicas dependentes do usuário. Como ele armazena o conteúdo em cache?

Vamos entender isso com dois cenários - primeiro onde a página é o painel do usuário e, em seguida, onde há listagens de produtos. O cenário dois é independente do usuário, os produtos são iguais em todas as solicitações ao servidor e, portanto, toda a página pode ser armazenada em cache. Novamente, o preço e a disponibilidade dos produtos são variáveis, o que pode ser tratado com a atualização oportuna do cache. O cenário um depende do usuário; o painel de um usuário pode não ser semelhante a outro usuário. Mas ainda existem alguns componentes, como imagens, legendas, cabeçalhos e rodapés, que podem ser armazenados em cache para melhorar o desempenho.

Como o cache funciona no ASP.Net?

É muito importante entender o processo do ASP.Net armazena em cache páginas da Web ou dados. Para entender isso, precisaríamos entender o processo de compilação .Net, para obter um entendimento justo de quando e onde armazenar em cache as páginas para otimizar o desempenho. O código de página do ASP.Net é compilado em dois estágios, o MSIL e o JIT. No estágio MSIL, o código da página escrito em idiomas de alto nível é compilado no Microsoft Intermediate Language. Isso acontece sempre que construímos nosso projeto. Todo o site ou projeto é compilado no MSIL toda vez que criamos. No estágio JIT, o código MSIL é então convertido em código de máquina nativo pelo compilador Just In Time. Isso ocorre durante a execução da página. No entanto, nem todo o projeto é convertido em código nativo o tempo todo. Somente as páginas solicitadas pelo usuário são convertidas de MSIL para código nativo durante a execução. Isso economiza muita largura de banda da rede e melhora o desempenho.

Agora, qual código devemos armazenar em cache, quando e onde?

O ASP.Net possui um mecanismo completo, dedicado ao cache. Possui recursos como dependência de tempo, dependência de arquivos e chaves, expiração, eliminação de dados, etc. Não entraremos em detalhes nesse artigo. O que precisamos entender é que podemos armazenar em cache nossas páginas e dados em dois locais para melhorar o desempenho do nosso aplicativo ASP.Net. O primeiro local é a seção Cache de página que reside no servidor ASP.Net. Esta página armazena caches e fragmentos de páginas, basicamente páginas ASPX. Sempre que uma página estática é solicitada, uma cópia do código nativo gerado é armazenada na seção Cache da Página. Isso economiza o tempo de compilação JIT durante solicitações de página subsequentes. O segundo local é o cache de dados. Isso armazena os dados buscados nos servidores de dados ou em outros servidores. Armazenar uma cópia desses dados ajuda a salvar futuras chamadas de rede para os servidores de banco de dados ou outros servidores de terceiros. Alguns exemplos dos dados armazenados em cache são dados do SQL Server, dados XML, dados JSON, respostas de API de terceiros etc.

Tipos de cache no ASP.Net

1. Cache de Saída da Página

Cache de saída da página significa armazenar em cache a saída completa da página solicitada. Sempre que um usuário solicita uma página ASP.Net, o compilador JIT compila o código MSIL relevante e gera a saída do código nativo a ser enviado como resposta ao cliente. Isso significa que toda vez que a página é solicitada, o compilador JIT precisa gerar o código nativo. E se a página for de natureza estática? E se a saída da página for a mesma após cada compilação? Podemos economizar muito tempo e recursos de compilação se armazenarmos o código nativo gerado dentro do cache de página. Os pedidos subsequentes para a mesma página podem ser buscados no cache. Isso é denominado cache de saída de página. Para alcançar o cache de saída de página, precisamos especificar a diretiva OuputCache no código ASP.Net com duração em segundos.





2. Cache de Fragmento de Página

Vimos como armazenar em cache uma página estática. E se a página for dinâmica e variar com os usuários? Aí vem o cache de fragmento de página. Ele permite que um desenvolvedor armazene em cache seções específicas da página. Isso ajuda quando você deseja armazenar em cache o cabeçalho e o rodapé, que geralmente são estáticos para todos os usuários. Para alcançar o cache de fragmento de página no ASP.Net, você deve encapsular o código do fragmento em um controle de usuário separado. Em seguida, adicione a mesma diretiva OuputCache no controle do usuário. Quando o controle do usuário é carregado junto com a página, uma cópia dele é mantida no cache. Portanto, todas as referências subseqüentes ao mesmo controle de usuário na mesma página ou em uma página diferente seriam buscadas no cache.





3. Cache de Dados

O cache de dados é o mecanismo de armazenamento dos dados necessários, que são freqüentemente acessados, no cache. Isso pode melhorar drasticamente o desempenho do aplicativo. Isso ocorre porque o armazenamento em cache de dados salva as chamadas de ida e volta do banco de dados, conhecidas por consumirem a maior quantidade de tempo. Quando dados acessados ​​com frequência e raramente alterados são armazenados em cache, o servidor busca os dados no cache em vez de fazer chamadas ao banco de dados. Isso também pode economizar dinheiro, pois as chamadas do banco de dados para os servidores de dados hospedados na nuvem cobram por solicitação. O cache de dados no ASP.Net é um mecanismo completo em si. Para obter o cache de dados em nossa página da Web ASP, precisamos usar o objeto Cache.

Cache("ProductName")="My Product";
Label1.Text= Cache("ProductName").ToString();

Por que precisamos de cache no ASP.Net?

Tendo entendido o processo de armazenamento em cache no ASP.Net, vejamos alguns exemplos práticos em que o armazenamento em cache é implementado em cenários em tempo real.

  • Existe uma página informativa, que gera relatórios com base nos dados no banco de dados. As tabelas do banco de dados são atualizadas a cada poucas horas.
    O cache de saída da página pode ser usado nesse cenário com uma duração do cache definida para corresponder à frequência do trabalho de atualização de dados.
  • Há uma página que mostra várias tabelas e dados que mudam constantemente. No entanto, as lendas e a explicação dos dados permanecem as mesmas.
    O cache de fragmento de página pode ser usado para armazenar em cache apenas os dados de legenda e explicação estáticos.
  • Existe um painel do usuário que é personalizado pelo usuário e gera gráficos e tabelas nas solicitações do usuário. Os dados usados ​​para gerar os gráficos e tabelas mudam com pouca frequência.
    O Data Caching pode ser usado para armazenar em cache os dados e gerar dinamicamente tabelas e gráficos solicitados pelo usuário.

Conclusão

Assim, aprendemos que o armazenamento em cache percorre um longo caminho para melhorar o desempenho do nosso aplicativo ASP.Net. Este foi um artigo de nível introdutório sobre armazenamento em cache no ASP.Net. Há mais para explorar. É recomendável aprender mais sobre armazenamento em cache para melhorar ainda mais o desempenho do aplicativo.

Artigo recomendado

Este foi um guia para armazenamento em cache no ASP.NET. Aqui discutimos Introdução ao cache no ASP.NET e seu trabalho junto com os tipos de cache. Você também pode consultar nossos outros artigos sugeridos para saber mais -

  1. Framework ASP.NET
  2. Controles de validação do ASP.Net
  3. Carreira no ASP.NET
  4. Perguntas da entrevista do .NET