.NET MVC 简单实现GZIP – 无记 – 博客园 -Mikel

.NET MVC 简单实现GZIP – 无记 – 博客园

2020年9月24日 分类: ASP.NET MVC, ASP.NET, C#, Debug
baacloud免费翻墙vpn注册使用

来源: .NET MVC 简单实现GZIP – 无记 – 博客园

GZIP的好处大家都知道,不过一般系统来说页面不会太大,很多人也没注意过这玩意儿。前段时间做一个系统用了一个国人开发的JQuery富客户端框架DWZ(个人感觉这个框架还是蛮不错的),类似EXT的AJAX框架,框架的JS加上我自己的真不小。

 

 

打算用GZIP来做压缩,之前在IIS6上做过,这个项目用MVC做,发现在.NET MVC下有更简单好用的办法来解决:写一个ActionFilter来实现GZIP,优点大家用了就知道,呵呵

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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);
            }
        }
    }
}

用法:

1
2
3
4
5
6
7
[Longin]
[Compress]
public ActionResult Index()
{
    
        return View();
}

只要在打算用GZIP压缩的Action上写上[Compress]就OK了,是不是很简单,呵呵~






标签:
本文的评论功能被关闭了.
备案信息冀ICP 0007948