日期:2014-05-20  浏览次数:20501 次

如何让.NET支持gzip压缩页面的功能
大家都在讨论如何解gzip压缩的页面的问题
但是这里询问如何不使用IIS提供的功能,而是用.NET另外编写一个过滤器什么的直接将动态生成的HTML页面进行 "gzip,deflate "压缩,并且原始的网站代码无需改动。

因为我们的空间只支持FTP上传网站,不可能改动其系统中的任何配置。

请问,有没有什么思路?

------解决方案--------------------
.Net支持两种压缩格式:GZip和Deflate。我试了一下,压缩率和速度没区别。其中,GZip可以被WinRAR打开。

使用起来很简单,下面的程序将字符串压缩入文件:

using (DeflateStream gzip = new DeflateStream(fs, CompressionMode.Compress))
{
byte[] buf = Encoding.UTF8.GetBytes(this.txbSource.Text);
gzip.Write(buf, 0, buf.Length);
gzip.Flush();
}


解压只需要这样:


gzip = new GZipStream(new MemoryStream(buf), CompressionMode.Decompress);
using (StreamReader reader = new StreamReader(gzip))
{
this.txbTarget.Text = reader.ReadToEnd();
}


如果从文件解压,只需要把MemoryStream换成一个FileStream就行了。
当然,需要加:using System.IO.Compression;