ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩

本文介绍如何在ASP.NET MVC3中实现Gzip压缩,通过自定义过滤器检查客户端是否支持压缩,并相应地设置响应头及输出流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ASP.NET MVC 3 网站优化总结(一) 使用 Gzip 压缩

分类: MVC 3.0 AspNet   470人阅读  评论(0)  收藏  举报

来源:http://www.lidongkui.com/asp-net-mvc-3-website-optimization-summary-enable-gzip



网站开启 Gzip 压缩的好处相信很多人都已经清楚,这样做可以提高网站的性能。那么为什么很多网站没有开启 Gzip 压缩功能呢?原因有4点:防病毒软件、浏览器 bug、网站代理和服务器未配置。

使用 IE6 时不会发送 Accept-Encoding 请求头,这样就不支持 Gzip 压缩功能了,所以这里号召大家使用 Google Chrome。在 ASP.NET MVC 3 中我们通过实现 ActionFilter 来实现,如下:

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

这样,我们在要实现 Gzip 压缩的 Action 上添加[Compress]即可实现 Gzip 压缩,如下:

  1. [Compress]  
  2. public ActionResult Index(string id)  

到这里我们就已经在 ASP.NET MVC 3 中实现了 Gzip 压缩,我们可以使用 Google Chrome 浏览器查看是否已正确实现 Gzip 压缩。使用快捷键 Ctrl+Shift+J 打开开发人员工具,查看结果如下图,发现已经实现 Gzip 压缩:

Google Chrome Gzip 压缩查看

本篇是 ASP.NET MVC 3 网站优化的第一篇文章,后边还有几篇文章我会陆续整理出来,希望能为 ASP.NET MVC 3 网站性能的提升起到一定的帮助作用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值