这里的网页程序压缩是指直接利用诸如 ASP.NET、JSP 等这样的网页程序压缩输出流,而不是通过诸如 IIS、Apache、Tomcat 这样的 Web 服务软件来压缩的。它的缺点是每个网页都要加上一段代码,它的优点是即使主机商不支持网页压缩,我们也可以实现。
以下是 ASP.NET 中一段代码,加在 Page_Load 中后,该网页输出时就变成压缩后的。
GZipStream 和 DeflateStream 的名称空间是:
System.IO.Compression
string acceptEncoding = Request.Headers.Get("Accept-Encoding");
if (acceptEncoding != null)
{
acceptEncoding = acceptEncoding.ToLower();
//浏览器 gzip 和 deflate 同时支持时,gzip 优先。
if (acceptEncoding.Contains("gzip"))
{
Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
Response.Filter = new DeflateStream(Response.Filter, CompressionMode.Compress);
Response.AppendHeader("Content-Encoding", "deflate");
}
}
关于这两种算法,请参见 ASP.NET 中的压缩和解压。