ASP.NET MVC 3 網站優化總結(一) 使用 Gzip 壓縮

 

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 網站性能的提升起到一定的幫助作用。


上一篇:js Tree - 樹形菜單插件轉於http://blog.csdn.net/fer_ba/article/details/7646896  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章