来源: .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了,是不是很简单,呵呵~