ASP.NET MVC 如何实现头压缩

网页的头部压缩在页面体积大的情况下非常有必要做,它会使页面体积有一个明显的减小,同时加到网页从服务端下载到客户端的速度,以下是我做的一个测试:

没有使用头压缩时:

使用了头压缩后:

我们可以看到,网页的体积足足减少了6KB,这对于远程传输来说是很重要的,同时,页面下载到客户端的速度也由825MS提升到了753MS,可以说是一次不小的

飞跃!呵呵!

在MVC环境中,是如何实现的呢,如果不是全局的,可以建立一个过滤器(特殊),然后应用到action或者controller上就可以了,我们以这种方式为例,我来共享一

下代码:

/// <summary>
     /// 页面头压缩
     /// </summary>
     public class CompressAttribute : ActionFilterAttribute
     {
         public override void OnActionExecuting(ActionExecutingContext filterContext)
         {
             var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
             if (!string.IsNullOrEmpty(acceptEncoding))
             {
                 acceptEncoding = acceptEncoding.ToLower();
                 var 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上加特性:

 [CompressAttribute]
     public partial class ProductController : BaseController
     { 
      //...
     }

  对于单个页面,可以直接到Action上加特性:

[CompressAttribute]
  public ActionResult Item(int id, int? grade, int? category)
   {
        //...   
   }

  

原文地址:https://www.cnblogs.com/haiyabtx/p/2832088.html