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
     { 
       //...
    }
  [CompressAttribute]
   public ActionResult Item(int id, int? grade, int? category)
    {
        //...   
    }

 

posted on 2013-04-08 10:42  米高佐敦  阅读(239)  评论(0编辑  收藏  举报