Исходящее сжатие данных http - PullRequest
       14

Исходящее сжатие данных http

1 голос
/ 28 сентября 2010

Кто-нибудь знает, можно ли сжать мои исходящие http-данные в IE? Я выполняю ajax-запросы к серверу и хочу уменьшить объем трафика, чтобы ускорить работу моего приложения.

Спасибо, Егор

1 Ответ

2 голосов
/ 28 сентября 2010

Ниже приведен распространенный способ создания атрибута фильтра сжатия:

public class CompressFilter : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext actionContext)
    {
        HttpRequestBase request = actionContext.HttpContext.Request;

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

        if (!string.IsNullOrWhiteSpace(acceptEncoding))
        {
            acceptEncoding = acceptEncoding.ToLowerInvariant();
            HttpResponseBase response = actionContext.HttpContext.Response;

            if (acceptEncoding.Contains("gzip"))
            {
                response.AddHeader("Content-encoding", "gzip");
                response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
            }
            else if (acceptEncoding.Contains("deflate"))
            {
                response.AddHeader("Content-encoding", "deflate");
                response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
            }
        }
    }
}

Теперь вы можете украсить свой контроллер атрибутом [CompressFilter].Это добавит заголовок сжатия к ответу для браузеров, которые его поддерживают, который IIS подберет.Если вы включили динамическое сжатие, IIS выдаст сжатые ответы.

...