프로그래밍/ASP.NET

웹 서비스에서 GZIP 압축해서 데이터 보내기

쇠주는참이슬 2015. 10. 2. 14:05





WebAPI 말고, WebMethod 를 이용하는 경우,

리스폰스 되는 데이터를 GZIP 형식으로 압축해서 보내려고 하면 아래와같이 하면 된다.


Glabal.asax 페이지에 아래 코드 삽입하고

웹메소드에서 JSON 형식으로 데이터를 Response 하면 GZIP 형식으로 압축되어서 전송된다.


public void Init(HttpApplication context)

    {

        context.PreRequestHandlerExecute += new EventHandler(Application_PreRequestHandlerExecute);

    }


    void Application_PreRequestHandlerExecute(object sender, EventArgs e)

    {

        HttpApplication app = (HttpApplication)sender;

        string acceptEncoding = app.Request.Headers["Accept-Encoding"];


        if (string.IsNullOrEmpty(acceptEncoding))

        {

            return;

        } 


        if (acceptEncoding.IndexOf("gzip", StringComparison.InvariantCultureIgnoreCase) >= 0)

        {

            app.Response.Filter = new System.IO.Compression.GZipStream(app.Response.Filter, System.IO.Compression.CompressionMode.Compress);

            app.Response.AppendHeader("Content-Encoding", "gzip");

        }

        else if (acceptEncoding.IndexOf("deflate", StringComparison.InvariantCultureIgnoreCase) >= 0

           || acceptEncoding == "*")

        {

            app.Response.Filter = new System.IO.Compression.DeflateStream(app.Response.Filter, System.IO.Compression.CompressionMode.Compress);

            app.Response.AppendHeader("Content-Encoding", "deflate");

        }

    }




asmx, gzip, compression, clinet