來源: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 來實現,如下:
- 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);
- }
- }
- }
- }
這樣,我們在要實現 Gzip 壓縮的 Action 上添加[Compress]即可實現 Gzip 壓縮,如下:
- [Compress]
- public ActionResult Index(string id)
到這裏我們就已經在 ASP.NET MVC 3 中實現了 Gzip 壓縮,我們可以使用 Google Chrome 瀏覽器查看是否已正確實現 Gzip 壓縮。使用快捷鍵 Ctrl+Shift+J 打開開發人員工具,查看結果如下圖,發現已經實現 Gzip 壓縮:
本篇是 ASP.NET MVC 3 網站優化的第一篇文章,後邊還有幾篇文章我會陸續整理出來,希望能爲 ASP.NET MVC 3 網站性能的提升起到一定的幫助作用。