asp.net mvc 服务端压缩动态渲染页面利器

来源:互联网 发布:绑定淘宝联盟 pid 编辑:程序博客网 时间:2024/05/29 04:14

原理是配合asp.net mvc 拦截器利用GZipStream压缩服务端页面,有效减少页面传输到前台的数据量

拦截器代码如下

 public class CompressFilter : ActionFilterAttribute    {        /// <summary>        /// 压缩页面用拦截器        /// </summary>        /// <param name="filterContext"></param>        public override void OnActionExecuting(ActionExecutingContext filterContext)        {            bool allowCompression = true;            //bool.TryParse(ConfigurationManager.AppSettings["Compression"], out allowCompression);            if (allowCompression)            {                HttpRequestBase request = filterContext.HttpContext.Request;                string acceptEncoding = request.Headers["Accept-Encoding"];                if (string.IsNullOrEmpty(acceptEncoding)) return;                acceptEncoding = acceptEncoding.ToUpperInvariant();                HttpResponseBase response = filterContext.HttpContext.Response;                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);                }            }        }    }

在动态渲染的controller action中加上以上拦截器特性



同一个页面压缩前和压缩后对比



vs


效果还是比较明显的!


注意静态页面就没必要压缩了,要么在发布时压缩过客户端web也可以启用缓存 没必要让服务器再压缩。


0 0
原创粉丝点击