Comprimindo respostas de APIs com GZIP — ASP.NET Core 2.2
Olá pessoal!
Hoje vamos falar sobre a compressão de respostas de API e como isso pode influenciar na performance da sua aplicação.
A compressão de dados é uma técnica utilizada com o objetivo de reduzir a quantidade de dados trafegados da aplicação, beneficiando os usuários que possuem um pacote limitado de internet.
O ASP.NET Core possui um middleware que simplifica os dados retornados pela nossa API.
Vamos criar um projeto do tipo ASP.NET Core Web Application utilizando o .NET Core
Selecione a opção .NET Core 2.2
Agora é somente escolher o nome do projeto e clicar em Create
O próximo passo é criar uma classe com o nome Livros, que utilizaremos para retornar como resposta em nossa API.
Precisamos agora criar nosso LivroController que receberá nossas requisições.
Para fins de teste, vou utilizar o Charles que é parecido com o Fiddler, pois o mesmo não esta disponível para MacOS.
Vamos agora realizar uma requisição para nossa controller através do navegador.
Em nossa primeira requisição, o tamanho da resposta da API foi de 552.83 KB e não possui compressão, conforme á apontando na imagem abaixo.
Agora vamos utilizar a compressão em nossa API, para isso instale o pacote Microsoft.AspNetCore.ResponseCompression via NuGet
Na classe Startup.cs, vamos adicionar um pouco de código nos métodos ConfigureServices e Configure.
Em nossa configuração, note utilizamos a seguinte configuração CompressionLevel.Optimal, porém podemos utilizar as opções Fastest ou NoCompression.
Com nossa compressão configurada, vamos agora realizar uma nova requisição, porém nesse momento, nossa aplicação esta com a compressão habilitada.
Como podemos ver, o tamanho total da nossa requisição foi de 54.78 KB, alcançando uma taxa de 90.1% de compressão. Um resultado excelente, onde conseguimos diminuir o tamanho do tráfego de informação e diminuir o tempo de resposta.
Porém, um dos pontos que devemos dar atenção, que para o funcionamento da compressão de dados é necessário utilizar poder de processamento da CPU. Isso em alguns cenários, pode acabar comprometendo o desempenho.
Até mais!!!
Referências:
https://docs.microsoft.com/pt-br/aspnet/core/performance/response-compression?view=aspnetcore-2.2