程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 在ASP.NET中使用HTTP壓縮

在ASP.NET中使用HTTP壓縮

編輯:關於ASP.NET

通過GZIP或DEFLATE方式對所有頁面進行壓縮,會大大縮小頁面傳輸的容量。

可以使用Fiddler2來觀察使用壓縮後頁面大小的變化。

在項目中添加Global.asax,然添加如下代碼:

1         protected void Application_BeginRequest(object sender, EventArgs e)
2 {
3 HttpApplication app = (HttpApplication)sender;
4 string acceptEncoding = app.Request.Headers["Accept-Encoding"];
5 Stream prevUncompressedStream = app.Response.Filter;
6 if (acceptEncoding == null || acceptEncoding.Length == 0) return;
7 acceptEncoding = acceptEncoding.ToLower();
8 if (acceptEncoding.Contains("gzip"))
9 {
10 // gzip
11 app.Response.Filter = new GZipStream(prevUncompressedStream, CompressionMode.Compress);
12 app.Response.AppendHeader("Content-Encoding", "gzip");
13 }
14 else if (acceptEncoding.Contains("deflate"))
15 {
16 // defalte
17 app.Response.Filter = new DeflateStream(prevUncompressedStream, CompressionMode.Compress);
18 app.Response.AppendHeader("Content-Encoding", "deflate");
19 }
20 }

修正:

這種方法是我無意中在網上找到的,我在實際的項目中並沒有使用,壓縮的效果是有的,但是對服務器端的資源占用情況我沒有測試過,所以不是太清楚這個和IIS中設置壓縮的方式那個好。暫時只是做一個代碼備份,以後用空在研究。

另外,這個方法還是有缺點的,我在試驗中發現使用後會導致.net自帶的TreeView的小圖標失效。原因是TreeView在使用默認的小圖標時,圖片文件是通過WebResource.axd獲取的,而壓縮後就無法獲取到圖片了,所以在代碼開始時對請求的文件進行過濾,對WebResource.axd不進行壓縮。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved