Chinaunix首页 | 论坛 | 博客
  • 博客访问: 834831
  • 博文数量: 366
  • 博客积分: 10267
  • 博客等级: 上将
  • 技术积分: 4290
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 14:04
文章分类

全部博文(366)

文章存档

2012年(366)

分类: 系统运维

2012-03-15 21:40:05

什么是页面压缩

当页面过大时,造成网络传输缓慢时, 可以使用gzip或deflate 对页面进行压缩, 其实gzip或deflate是服务器与客户端浏览器共同支持的协议, 当客户端请求服务器时, 服务器判断客户端是否支持压缩,当支持并且服务器配置了压缩时, 服务器会传送压缩好的数据给浏览器, 浏览器再将数据解析呈现.

在IIS7中,默认是开启了页面压缩,如图

什么是静态压缩?

静态压缩是服务器将数据压缩后,存储都临时目录(见上图), 当有请求过来时, 服务器会判断是否有压缩好的数据,如果没有,服务器会进行页面压缩,并存储,同时将压缩好的数据返回,当再次有相同的请求时, 服务器会从临时目录中返回压缩好的数据

什么是动态内容压缩?

动态内容压缩, 是指当客户端请求某个页面时,由于页面数据可能会变动, 例如(*.aspx), 服务器会先将数据压缩并放入内存,在将数据返回客户端;当再次有相同请求时, 服务器依然会重复之前动作,对页面进行压缩,在想数据返回

如何手动实现?

其实很简单,我将核心代码贴上来, 大家一看便知 ,代码下载

GZipStream gzip = new GZipStream(filterContext.HttpContext.Response.Filter, CompressionMode.Compress);
filterContext.HttpContext.Response.AppendHeader("Content-Encoding", "GZIP");
filterContext.HttpContext.Response.Filter = gzip;

主要是GZipStream类的功劳, 需要注意的是Response.AppendHeader("Content-Encoding", "GZIP") 这里的GZIP 必须是大写! 在看看我们页面返回的数据,

没错,就这莫简单, 但是需要注意的是, 使用页面压缩不一定都是有益的, 特别是动态内容压缩,因为每次请求服务器都会对内容进行压缩, 对服务器性能会产生影响, 如果你服务器超级牛b的话,那就另说

说个题外的,昨天使用MVC的时候,访问Views里面的静态页面,死活不成功,悲剧的是我使用MVC很长时间竟然没碰到这个问题,后来Google才知道Views是一个特殊目录,放在其他目录中就行

阅读(465) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~