Close Menu
Código Simples .NETCódigo Simples .NET
    Facebook X (Twitter) Instagram
    Trending
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    • Por que escalar escrita é tão mais difícil do que escalar leitura?
    • MongoDB Analyzer para .NET: Visualize e otimize suas consultas de forma simples
    • Cardinalidade: O Conceito que Transforma o Desempenho de Bancos de Dados SQL e NoSQL
    Facebook X (Twitter) Instagram
    Código Simples .NETCódigo Simples .NET
    Código Simples .NETCódigo Simples .NET
    Home»Asp.net»C#»Realizando compactação com a compressão GZIP e Deflate no ASP .NET MVC C#

    Realizando compactação com a compressão GZIP e Deflate no ASP .NET MVC C#

    Jhonathan SoaresBy Jhonathan Soares23 de abril de 20142 Mins Read C#
    Share
    Facebook Twitter LinkedIn WhatsApp Copy Link

    Recentemente, fiz um post de como realizar compactação Gzip utilizando configurações no WebConfig . Hoje vou mostrar uma maneira na qual você poderá implementar em MVC. Fazendo a compactação da controller de maneira automática, simples e fácil.

    Comprimir
    Comprimir

    Como a compactação via controller funciona?

    1. Os navegadores que suportam a compactação ( por padrão os novos navegadores suportam a compactação) enviam ao servidor a “aceitação” de conteúdo compactado
    2. O servidor web recebe a solicitação e se prontifica de utilizar a compactação gzip
    3. Após a compactação o servidor notifica o cliente com o conteúdo .zip já pronto para ser trafegado e transferido ao cliente, todo aquele conteúdo que trafegou na controller e saiu para view.

     

    Fonte: https://developers.google.com/speed/articles/gzip

     

    Agora, mão a obra!

    Inicialmente vamos criar trecho de código similar a este

     
     public class CompressFilterAttribute : ActionFilterAttribute
            {
                public override void OnActionExecuting(ActionExecutingContext filterContext)
                {
                    HttpResponseBase response = filterContext.HttpContext.Response;
    
                    if (response.Filter is GZipStream || response.Filter is DeflateStream) return;
    
                    HttpRequestBase request = filterContext.HttpContext.Request;
    
                    string acceptEncoding = request.Headers["Accept-Encoding"];
    
                    if (string.IsNullOrEmpty(acceptEncoding)) return;
    
                    acceptEncoding = acceptEncoding.ToLower();
    
                    if (acceptEncoding.Contains("gzip"))
                    {
                        response.AppendHeader("Content-encoding", "gzip");
                        response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
                    }
                    else if (acceptEncoding.Contains("deflate"))
                    {
                        response.AppendHeader("Content-encoding", "deflate");
                        response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
                    }
                }
            }
            
            

    Resumidamente o que este código faz?
    Bom, a classe envia o pacote de aceite ao cliente aceitando a compactação e a realiza pelo Gzip ou pelo Deflate ( que é outro método de compactação )

    Agora basta adicionar o filtro de compactação na controller que você deseja compactar

     
         [CompressFilter]
        public class HomeController : Controller
        {
        }
        

    Com isto você ganha mais performance!

    Para uma leitura mais aprofundada, recomendo ler : https://developers.google.com/speed/articles/gzip

    Obrigado a todos!

    deflate gzip mvc performance
    Share. Facebook Twitter LinkedIn Telegram WhatsApp Copy Link
    Jhonathan Soares
    • Website
    • Facebook
    • X (Twitter)
    • LinkedIn

    Criador do blog Código Simples e com mais 15 anos de experiência em TI, com títulos de MVP Microsoft na área de Visual Studio Development, Neo4j Top 50 Certificate, Scrum Master e MongoDB Evangelist.

    Posts Relacionados

    O que é a Ecma e qual é sua relação com C#?

    C# Post do Leitor 29 de julho de 20247 Mins Read

    UUID vs ULID: comparação e exemplos em C#

    C# 19 de junho de 20245 Mins Read

    Entendendo o ObjectId no MongoDB

    C# NoSql 25 de maio de 20246 Mins Read
    Newsletter

    Digite seu endereço de e-mail para receber notificações de novas publicações por e-mail.

    Junte-se a 25mil outros assinantes
    Posts recentes
    • NewSQL em 2025: O Estado Atual, Tendências e o Futuro dos Bancos de Dados Relacionais Escaláveis
    • 12 Regras Essenciais para Reduzir a Latência de Aplicações
    • Cache Hit Ratio: Como uma Simples Métrica Pode Revolucionar sua Arquitetura
    • Como a Uber calcula o tempo estimado de chegada
    • 30 APIs Gratuitas para desenvolvedores
    Categorias
    • Arquitetura (14)
      • Testes (2)
    • Asp.net (120)
      • C# (89)
      • Mvc (13)
    • Banco de dados (90)
      • NoSql (58)
      • Sql (38)
    • Boas práticas (29)
      • Gestão & Produtividade (1)
      • Metodologias Ágeis (6)
    • Cursos (52)
    • Dicas (105)
    • Front-End (92)
    • IA (1)
    • Linux (6)
    • NodeJS (4)
    • Post do Leitor (9)
    • Python (5)
    • Seo (12)
    • Tecnologia (30)
      • ITIL (1)
      • Padrões de Projeto (4)
    • Testes (2)

    VEJA TAMBÉM

    Cursos
    12 de fevereiro de 20166 Mins Read

    1000 livros gratuitos sobre programação!

    Olha que dica bacana! A pagina só com livros sobre programação é mantida no GitHub…

    30 APIs Gratuitas para desenvolvedores

    Facebook X (Twitter) Instagram LinkedIn

    Type above and press Enter to search. Press Esc to cancel.

    Vá para versão mobile