实现页面的GZip或Deflate压缩。
.NET Framework里
System.IO.Compression下有两个可用于页面压缩的类,GZipStream和 DeflateStream.
---
在页面被传输之前,需要获取发出请求的客户端所采用的解码形式。
可以通过Request.Headers["Accept-Encoding"]来获取。
---
在页面被压缩之前,需要获取页面实体主体,可通过
Response.Filter来获取(Stream类型)
------
示例代码:
1
using System;
2
using System.Data;
3
using System.Configuration;
4
using System.Web;
5
using System.Web.Security;
6
using System.Web.UI;
7
using System.Web.UI.WebControls;
8
using System.Web.UI.WebControls.WebParts;
9
using System.Web.UI.HtmlControls;
10
using System.IO;
11
using System.IO.Compression;
12![](/Images/OutliningIndicators/None.gif)
13
/// <summary>
14
/// GzipDeflate 的摘要说明
15
/// </summary>
16
public class GzipDeflate:IHttpModule
17
{
18
public GzipDeflate()
19
{
20
//
21
// TODO: 在此处添加构造函数逻辑
22
//
23
}
24
public void Init(HttpApplication app)
25
{
26
app.BeginRequest += new EventHandler(app_BeginRequest);
27
}
28![](/Images/OutliningIndicators/InBlock.gif)
29
void app_BeginRequest(object sender, EventArgs e)
30
{
31
//HTTP头域可分为四类:通用头、请求头、响应头、实体头。
32
HttpApplication app=(HttpApplication)sender;
33
string acceptEncoding = app.Request.Headers["Accept-Encoding"]; //客户端支持的解码方式。属于请求头。
34
Stream requestStream = app.Response.Filter;
35
acceptEncoding = acceptEncoding.ToLower();
36
if(acceptEncoding.Contains("gzip"))
37
{
38
app.Response.Filter = new GZipStream(requestStream, CompressionMode.Compress);
39
app.Response.AppendHeader("Content-Encoding", "gzip");
40
}
41
else if(acceptEncoding.Contains("deflate"))
42
{
43
app.Response.Filter = new DeflateStream(requestStream, CompressionMode.Compress);
44
app.Response.AppendHeader("Content-Encoding", "deflate"); //属于实体头。
45
}
46
}
47
public void Dispose()
48
{
49![](/Images/OutliningIndicators/InBlock.gif)
50
}
51
}
52![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
52
![](/Images/OutliningIndicators/None.gif)
<h3>
心静似高山流水不动,心清若巫峰雾气不沾。
</h3>
心静似高山流水不动,心清若巫峰雾气不沾。
</h3>