Qual o prazo de retorno de uma loja virtual?

Todo mundo pensa em montar um e-commerce e faturar imediatamente, mas a gente sabe que não é bem assim. Cada negócio on-line ou físico funciona muito diferente e não tem regra totalmente correta que funcione de maneira igual para todas, o que posso dizer é que em ambos os negócios é necessário...

Ler mais

Compressão/Compactação HTTP via codigo .NET (HTTPModule)

Postado por Rafael | Postado em .NET, Desenvolvimento | Postado 18-08-2011

0

Abaixo vou colocar um exemplo de como ativar a compactação de pacotes HTTP via codigo, essa implementação teve um impacto de performance muito positivo:

Uma dica é que se a compactação do IIS estiver habilitada vai gerar problemas.

O Web.Config :

Você precisa adicionar a referencia para a classe, conforme abaixo(Pode ser diferente dependendo da versão do IIS):

<system.webServer>
<modules>
<add name="HTTPCompressionModule" type="Framework.Core.HTTPCompressionModule"></add>
</modules>
</system.webServer>

A classe:

using System;
using System.IO;
using System.IO.Compression;
using System.Globalization;
using System.Web;

namespace Framework.Core
{
    public class HTTPCompressionModule : IHttpModule
    {
        public HTTPCompressionModule()
        {
        }

        public void Dispose()
        {
        }

        public void Init(HttpApplication httpApplication)
        {
            httpApplication.PreRequestHandlerExecute += new EventHandler(Compress);
        }
        private bool isPathPermited(string strPath)
        {
            return (strPath.ToUpper().Contains(".ASPX") ||
                    strPath.ToUpper().Contains(".ASCX") ||
                    strPath.ToUpper().Contains(".ASP") ||
                    strPath.ToUpper().Contains(".HTML") ||
                    strPath.ToUpper().Contains(".HTM") ||
                    strPath.ToUpper().Contains(".CSS") ||
                    strPath.ToUpper().Contains(".JS") ||
                    strPath.ToUpper().Contains(".XML"));
        }
        private bool isContentTypeProhibited(string contentType)
        {
            return (contentType.ToUpper().Contains("APPLICATION/CSV"));
        }

        protected void Compress(object sender, EventArgs e)
        {
            HttpApplication httpApplication = (HttpApplication)sender;
            HttpRequest httpRequest = httpApplication.Request;
            HttpResponse httpResponse = httpApplication.Response;

            //#if DEBUG
            //    return;
            //#endif

            if (!string.IsNullOrEmpty(httpResponse.ContentType.ToLower(CultureInfo.InvariantCulture)))
            {
                if (!((httpRequest.Browser.IsBrowser("IE")) && (httpRequest.Browser.MajorVersion <= 6)))
                {
                    string acceptEncoding = httpRequest.Headers["Accept-Encoding"];
                    if (isPathPermited(httpRequest.Path) && !isContentTypeProhibited(httpRequest.ContentType))
                        if (!string.IsNullOrEmpty(acceptEncoding))
                        {
                            acceptEncoding = acceptEncoding.ToLower(CultureInfo.InvariantCulture);

                            if (acceptEncoding.Contains("gzip"))
                            {
                                if (httpResponse.Headers["Content-encoding"] == null)
                                {
                                    httpResponse.Filter = new GZipStream(httpResponse.Filter, CompressionMode.Compress);
                                    httpResponse.AddHeader("Content-encoding""gzip");
                                }
                            }
                            else if (acceptEncoding.Contains("deflate"))
                            {
                                if (httpResponse.Headers["Content-encoding"] == null)
                                {
                                    httpResponse.Filter = new DeflateStream(httpResponse.Filter, CompressionMode.Compress);
                                    httpResponse.AddHeader("Content-encoding""deflate");
                                }
                            }
                        }
                }
            }
        }
    }
}
<system.webServer>

Escrever um comentário