C#(CSharp) | VC/C++ | C++Builder | ASP(ASP.NET) | SQL Server | OpenGL | CMM | 网站开发SEO | 数控技术 | 地理信息系统 | WINDOWS操作系统 |
联高软件 > 技术文档 > C# > 一个代码搞定页面压缩HTTPCOMPRESS源代码[原创] C#软件开发参考文档

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

发表:联高软件www.legalsoft.com.cn,本文被阅读:3156

摘要:文章:一个代码搞定页面压缩HTTPCOMPRESS源代码[原创] 摘要:先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理。很多人编写网页的时候页面因为使用了大量的JS特效又或者,发表于北京联高软件有限公司技术文章栏目,代码以高亮显示。
关键字:代码, 页面, 压缩, 原创, httpcompress, app, gt, system, encodings, using, response, return, 模块, 资源, gzip, 服务器, 处理, web

先简单说一说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 压缩好就可以了,呵呵。

祝您的网站越来越快!

[C#] 关于事件处理(C#) (2651)
[C#] 用C#实现生成PDF文档 (3211)
[C#] GridView根据值的变化改变行列样式 (2692)
[C#] C#开发WAP之GOOGLEADSENSE移动广告代码获取源代码[原创] (3187)
[C#] .NET中带有口令加密的注册页面 (2474)
[C#] 常用编码工具类,支持base64,md5,des,crc32 (2430)
[C#] C#用于实现图片任意角度旋转的源程序 (1878)
[C#] .Net中的反射使用入门 (2312)
[C#] 如何使用SQLSERVER2000中的XML功能 (3905)
[C#] 精确提取网页所有链接的正则表达式及C#源代码[原创] (1885)
[C#] ASP.NET缓存:方法和最佳实践 (2381)
[C#] Web2.0时代,RSS你会用了吗? (1346)
[C#] C#通用的数据操作类 (8071)
[C#] C#数据库事务原理及实践(上) (2483)
[C#] C#中的域(FIELD)和属性(PROPERTY) (5090)
[C#] C#.NET数据库操作记要 (3141)
[C#] ASP程序员学习C#之超级攻略 (4594)
[C#] C#设计模式之建造者(BUILDER)模式示例源代码 (3465)
[C#] C#绘图(可以处理负值) (2694)
[C#] c#操作word表格 (1905)

www.315soft.com