zoukankan      html  css  js  c++  java
  • 将不确定变为确定~头压缩是否有必要,MVC如何实现头压缩

    回到目录

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

    没有使用头压缩时:

    使用了头压缩后:

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

    飞跃!呵呵!

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

    下代码:

     1     /// <summary>
     2     /// 页面头压缩
     3     /// </summary>
     4     public class CompressAttribute : ActionFilterAttribute
     5     {
     6         public override void OnActionExecuting(ActionExecutingContext filterContext)
     7         {
     8             var acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
     9             if (!string.IsNullOrEmpty(acceptEncoding))
    10             {
    11                 acceptEncoding = acceptEncoding.ToLower();
    12                 var response = filterContext.HttpContext.Response;
    13 
    14                 if (acceptEncoding.Contains("gzip"))
    15                 {
    16                     response.AppendHeader("Content-encoding", "gzip");
    17                     response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
    18                 }
    19                 else if (acceptEncoding.Contains("deflate"))
    20                 {
    21                     response.AppendHeader("Content-encoding", "deflate");
    22                     response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
    23                 }
    24             }
    25         }
    26     }

    将你希望对一组页面应用头压缩时,可以在Controller上加特性:

    1     [CompressAttribute]
    2     public partial class ProductController : BaseController
    3     { 
    4       //...
    5      }

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

    1   [CompressAttribute]
    2   public ActionResult Item(int id, int? grade, int? category)
    3    {
    4        //...   
    5    }

    回到目录

  • 相关阅读:
    Nero8刻录引导系统光盘镜像图文教程
    C#多线程与并行编程方面的电子书,中英文版本
    [转]C#通过委托更新UI(异步加载)
    [PHP] 6种负载均衡算法
    [GIt] 团队工作效率分析工具gitstats
    [Git] git代码统计
    [Git] 写文章 史上最全文献检索、阅读及管理攻略
    [Git] 谷歌的代码管理
    [JQuery] jQuery选择器ID、CLASS、标签获取对象值、属性、设置css样式
    [Mongo] 解决mongoose不支持条件操作符 $gt$gte:$lte$ne $in $all $not
  • 原文地址:https://www.cnblogs.com/lori/p/2717185.html
Copyright © 2011-2022 走看看