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!!!

https://docs.microsoft.com/pt-br/aspnet/core/performance/response-compression?view=aspnetcore-2.2

Renicius Pagotto Fostaini

Written by

Developer .NET