.NET Core e Cache: Memory Cache

Um dos fatores de sucesso de uma aplicação em termos de performance e de escalabilidade é a maneira de como foi desenvolvida uma estratégia para poder economizar/poupar algumas atividades como acesso a disco, banco de dados e operações que consumam muito CPU.

O Cache é um recurso muito importante para estes fins, com ele evitamos que certas partes de código sejam executadas várias vezes de maneira desnecessária. Por exemplo: não se faz necessário para cada usuário do seu site que você consulte o banco de dados ou um xml para montar a estrutura do menu, para este fim você pode definir um tempo de atualização e guardar a informação do menu  em um cache (em memória por exemplo) evitando assim IOs desnecessários.

Continue reading

Cache + .NET: Cache HTTP (aumente a performance de seu site)

O Cache HTTP é um recurso extremamente importante e disponível em qualquer plataforma de desenvolvimento web, neste quarto post da série de Cache + .NET vou apresentar o funcionamento do Cache HTTP e as principais maneiras de implementa-lo utilizando .NET.

Front End (80-20)

Para falar sobre Cache HTTP, vou começar com uma frase sobre performance de front end, de um dos maiores especialitas em web performance.image

“…somente 10-20% do tempo total do carregamento de uma página é gasto para receber o HTML do servidor para o navegador. Você precisa focar nos outros 80-90% se você quiser tornar suas páginas visivelmente mais rápidas…”

(Steve SoudersHigh Performance Web Sites)

Neste livro Steve Souders explica 14 regras, que são boas práticas para aumentarmos a performance de nossos sites, configurar e utilizar o Cache HTTP nos ajuda a evitar downloads de recursos e conexões desnecessários com o servidor. Continue reading

Cache + .NET: Sistemas de Cache Distribuído

Neste terceiro post da série de Cache + .NET vou abordar sistemas de cache distribuído, um conceito muito importante em cenários de grande escala e muita concorrência. É muito importante testar e utilizar sistemas de cache distribuído quando o uso e cenário fizer sentido, isso varia muito do perfil e tamanho de sua aplicação e volumes de acesso.

Sistemas de Cache Distribuídos

Para este post vou caracterizar um sistema de cache distribuído como um sistema heterogêneo, que armazena objetos em memória, por determinado tempo, e com um ferramental de inserção e manutenção (purge, insert, get), executado em diversos servidores, e que se conecta com seus clientes ou demais partes do sistema utilizando TCP/IP (exemplo), proporcionando uma grande escalabilidade horizontal (adicionando mais servidores), redundância, resiliência, disponibilidade e performance.

Continue reading

Cache + .NET: OutputCache

Como eu disse em um post anterior (Cache + .NET: Cache de Objetos), existem diversas técnicas para conseguirmos melhorar a performance de nossas aplicações web. Seguindo a série de 4 posts que eu estou escrevendo sobre as diversas técnicas para utilizar Cache com .NET e aplicações Web, vou abordar temas como: Cache de Objetos, OutputCache, Sistemas de Cache Distribuídos e Cache Http.

Neste segundo post vou abordar o OutputCache.

O OutputCache é sem dúvida uma das melhores maneiras de aumentarmos a performance em nossas aplicações, ele vem evoluindo e existe desde o ASP.NET 1.1, com ele é possível manter em memória (ou em outro meio) uma versão gerada daquela página, user control, action ou partial, tendo diversos mecanismos de controles, como o tempo de duração do cache e a variação e versionamento de acordo com alguns parâmetros (querystring, paginas, ids, etc).

Continue reading

Cache + .NET: Cache de Objetos

Existem diversas técnicas e abordagem para melhorarmos a performance de nossas aplicações e sites. O Cache é uma excelente maneira de economizarmos recursos e melhorar a performance de nossas aplicações, basicamente técnicas de Cache consistem em manter uma versão daquele recurso em uma área de acesso rápido e otimizado (ex: memória). Continue reading