c# gzip html,C#实现页面GZip或Deflate压缩的方法

本文实例讲述了C#实现页面GZip或Deflate压缩的方法。分享给大家供大家参考。具体分析如下:

.NET Framework里

System.IO.Compression下有两个可用于页面压缩的类,GZipStream和 DeflateStream.

在页面被传输之前,需要获取发出请求的客户端所采用的解码形式。

可以通过Request.Headers["Accept-Encoding"]来获取。

在页面被压缩之前,需要获取页面实体主体,可通过

Response.Filter来获取(Stream类型)

示例代码:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using System.IO.Compression;

///

/// GzipDeflate 的摘要说明

///

public class GzipDeflate:IHttpModule

{

public GzipDeflate()

{

//

// TODO: 在此处添加构造函数逻辑

//

}

public void Init(HttpApplication app)

{

app.BeginRequest += new EventHandler(app_BeginRequest);

}

void app_BeginRequest(object sender,EventArgs e)

{

//HTTP头域可分为四类:通用头、请求头、响应头、实体头。

HttpApplication app=(HttpApplication)sender;

string acceptEncoding = app.Request.Headers["Accept-Encoding"];

//客户端支持的解码方式。属于请求头。

Stream requestStream = app.Response.Filter;

acceptEncoding = acceptEncoding.ToLower();

if(acceptEncoding.Contains("gzip"))

{

app.Response.Filter = new GZipStream(requestStream,CompressionMode.Compress);

app.Response.AppendHeader("Content-Encoding","gzip");

}

else if(acceptEncoding.Contains("deflate"))

{

app.Response.Filter = new DeflateStream(requestStream,"deflate");

//属于实体头。

}

}

public void Dispose()

{

}

}

希望本文所述对大家的C#程序设计有所帮助。

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

小编个人微信号 jb51ccc

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值