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

一个代码搞定页面压缩HTTPCOMPRESS源代码

发表:联高软件www.legalsoft.com.cn,本文被阅读:1
先简单说一说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#(CSharp)
·C#开发WAP之GOOGLEADSENSE移动广告代码获取源代码[原创] (1268)
·C#代码注释文字自动提取,与他人共享DLL (1783)
·用C#写ASP.NET搜索蜘蛛代码程序 (2152)
·C#编写GOOGLESITEMAP.XML源代码 (1523)
·如何使用SQLSERVER2000中的XML功能 (1764)
·C#开发WAP之GOOGLEADSENSE移动广告代码获取源代码[原创] (1268)
·C#代码注释文字自动提取,与他人共享DLL (1783)
·用C#写ASP.NET搜索蜘蛛代码程序 (2152)
·C#编写GOOGLESITEMAP.XML源代码 (1523)
·静态HTML代码优化的基本SEO原则 (1167)
·超强C#图片上传,加水印,自动生成缩略图源代码(联高原创) (2997)
·C#中用SYSTEM.XML读写XML说明与代码 (9306)
·简单实用的C#分词源代码(含词库素材下载) (5116)
·C#高效分页代码(不用存储过程) (6000)
 最新文章
·一个代码搞定页面压缩HTTPC
·C#开发WAP之GOOGLEADSENSE移
·EXCEL合并文件及合并工作表
·C#代码注释文字自动提取,与
·两种通用分页存储过程的对比
·用C#写ASP.NET搜索蜘蛛代码
·C#编写GOOGLESITEMAP.XML源
·静态HTML代码优化的基本SEO
·几项SEO原则打造良好的网页
·如何使用SQLSERVER2000中的
·超强C#图片上传,加水印,自
·C#中用SYSTEM.XML读写XML说
·C#取真实IP地址及分析
·C#+DIRECT3D9.0开发实例之月
·ASP程序员学习C#之超级攻略
·通过C#实现集合类纵览.NETC
·C#开发WAP程序实例
·C#3.0中对象初始化器和集合
·C#3.0新特性速览
·ASP和ASP.NET的MD5加密中文
·CSS截取固定长度字符串
·简单实用的C#分词源代码(含
·C#高效分页代码(不用存储过
·SERVER.TRANSFER是在两个页
·一个克隆对象的C#基类
·C#语言FTP客户端代码
·递归枚举排列、组合的C#源码
·在C#.NET中跟踪代码的运行过
·ASP.NET2.0中实现跨页面提交
·C#通用的数据操作类
·常用的C#数据检查类
·C#中的域(FIELD)和属性(
·C#编码规范和编程好习惯
·C#编码好习惯
·用C#实现C/S模式下软件自动
·C#参考之访问关键字:BASE、
·C#实现遗传算法模拟花朵的进
·用C#的类实现数据结构的堆栈
·在C#中应用哈希表(HASHTABL
·用C#生成中文汉字验证码的基
·C#.NET支付宝接口
·在C#中利用SHARPZIPLIB进行
·程序员必须知道的SQLSERVER
·360度全方位比较C#和VB
·C#设计模式之建造者(BUILDE
·C#抽象工厂模式的几种实现方
·用设计模式固化C#程序
·数据结构与算法(C#实现)系列
·在C#中建立复杂的、灵活的S
·解读C#中的正则表达式
 热门文章
·程序员必须知道的SQLSERVER
·OpenGL 入门教程(一)
·OpenGL基础篇
·使用回调函数(VC & Delphi)
·OpenGL 入门教程(二)
·C#中用SYSTEM.XML读写XML说
·C++Builder的一些技巧
·数控加工技术试题库
·矩阵相乘的快速算法
·矩阵求逆的快速算法
·数控车床加工编程典型实例分
·如何实现进程间数据通讯技术
·C#中SOCKET多线程编程实例
·数控试题(一)
·第一个三角形:NeHe的OpenG
·数控考题(二)
·选择与反馈 (OpenGL)
·函数调用的几个概念:_stdc
·TServerSocket和TClientSoc
·OpenGL 入门教程(三)
·OpenGL 入门教程(四)
·用C#实现C/S模式下软件自动
·SERVER.TRANSFER是在两个页
·C#高效分页代码(不用存储过
·Dijkstra 最短路径算法的一
·地理信息系统中的常规网络分
·数控机床标准M代码
·数控车床基本坐标关系及几种
·OpenGL 入门教程(六)
·自己绘制True type font字体