[原创]一个代码搞定页面压缩HTTPCOMPRESS源代码

2022-07-04 19:39

文档管理软件,文档管理系统,知识管理系统,档案管理系统的技术资料:
先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理。

很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工具本地对页面或脚本进行一定的压缩后再上传到服务器,但这样的压缩工具一般压缩率有限,优化自然也不明显。

本文章介绍的压缩模块的作用就是对asp.net的页面资源进行高强度GZIP压缩(一般能压缩到只有1/5的体积),而且压缩的过程是发生在客户端请求aspx页面的时候由服务端进行压缩处理后再传送给客户端显示,换言之项目使用这些压缩模块之后,所有的aspx页面都不需要事先进行压缩处理,而是由压缩模块在页面被客户端第一次请求的时候自动在服务端后台进行压缩处理(压缩处理的时间很快,几乎可以忽略不计,但压缩后的页面加载速度却提升明显)。

各种压缩模块都能达到优化页面的作用,但由于压缩的过程是发生在服务器一端,所以启用这些压缩会消耗一点点服务器资源,不过一般来说压缩只发生在客户端第一次访问页面的时候,因为之后浏览器本身cache了页面及资源的关系,再次刷新访问的时候就不会再占用服务器资源进行压缩了,所以对于网站页面体积庞大的开发者来说,启用压缩功能绝对是物有所值的,毕竟页面体积更小,加载就会更快!

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.IO;
using System.IO.Compression;
namespace K50018.Basic
{
public class HttpCompress : IHttpModule
{
void IHttpModule.Dispose()
{
}
void IHttpModule.Init(HttpApplication context)
{
context.PostReleaseRequestState += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
if (app.Request[“HTTP_X_MICROSOFTAJAX“] != null || app.Request[“Anthem_CallBack“] != null) return;
if (app.Response.ContentType != “text/html“) return;
string encodings = app.Request.Headers.Get(“Accept-Encoding“);
if (encodings == null) return;
encodings = encodings.ToLower();
Stream s = app.Response.Filter;
if (encodings.Contains(“gzip“))
{
app.Response.Filter = new GZipStream(s, CompressionMode.Compress);
app.Response.AppendHeader(“Content-Encoding“, “gzip“);
return;
}
if (encodings.Contains(“deflate“))
{
app.Response.Filter = new DeflateStream(s, CompressionMode.Compress);
app.Response.AppendHeader(“Content-Encoding“, “deflate“);
return;
}
}
}
}


web.config文件

<system.web>

<compilation debug=“true“ />
<customErrors mode=“Off“/>
<authentication mode=“Forms“ />
<globalization requestEncoding=“gb2312“ responseEncoding=“gb2312“ />

<httpModules>
<add name=“HttpCompress“ type=“K50018.Basic.HttpCompress“/>
</httpModules>

</system.web>

本文给出的代码不是最全面的,但是最简单有效的。
作者认为一般的网站只需要把 .ASPX 压缩好就可以了,呵呵。

祝您的网站越来越快!