传出的http数据压缩

时间:2010-09-28 09:38:18

标签: asp.net-mvc httpwebrequest xmlhttprequest

有人知道吗,是否有可能在IE中压缩我的传出http数据? 我对服务器执行ajax请求,并希望减少流量以加快我的应用程序。

谢谢, 叶戈尔

1 个答案:

答案 0 :(得分:2)

以下是创建压缩过滤器属性的常用方法:

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将输出压缩响应。