IIS6和IIS7对静态文件gzip压缩方式

先说明下为什么要写这篇文章,以及纠结于这个“小问题”。首先开启静态文件的gzip压缩非常有利用提高网站的访问速度,并且有效减少蜘蛛爬行静态页面的time-taken,同时也不会像开启动态文件压缩一样可能会对百度蜘蛛造成200 0 64的抓取问题,所以一方面,网站速度快有利于提高用户体验,另一方面,google管理员博客在今年已经明确表示网站速度是排名的因素之一,而对于拿国外主机做百度中文站优化,time-taken不理想会导致百度蜘蛛内页抓的少,国平之前在自己博客文章网页加载速度是如何影响SEO效果的中也提到过,在固定的一段时间内蜘蛛抓取网站的总时间是固定的,那么抓取速度上去了,抓取页面数就会更多,反之则少。

好吧,开始正文,在上篇文章《蜘蛛抓取静态页面与触发gzip压缩的实验结果》中的问题二,我提出了gzip静态页面的压缩版本在服务器上保存方式的猜测,在困惑了许久之后,发现导致两个主机返回gzip结果不同的最终原因是iis版本而不是我猜测的缓存文件夹设置过小

事实上,iis7比iis6在静态压缩上有了较大的更新,在IIS6中,静态压缩是在一个不同的线程上进行的,所以在收到一个HTTP请求后,第一个发送给浏览器的HTML版本是没有压缩过的,而同时IIS6会开始使用一个不同的线程对这个文件进行压缩并且将这个压缩后的版本长期保存在压缩文件的缓存文件夹内。而在以前,也就是IIS6服务器上,在压缩完成之后凡是对该被压缩版本的静态文件的HTTP请求,IIS6都会直接从缓存文件夹中直接调用压缩后的版本并返回给浏览器。

但是在IIS7中,压缩是在主线程上进行的,而且为了节省压缩的成本,IIS7不对所有的HTTP请求而只对哪些经常会被用户访问的静态文件进行压缩版本的长期保存,这也就是为什么我在之前第一次访问没有压缩,短期内再次访问返回的是压缩版本,但是再过几分钟访问返回的又是未压缩版本的原因。这里我们可以理解为IIS7并没有将压缩版本实际保存到缓存文件夹中,而是只在服务器内存中做了保存,或者是临时将压缩版本保存到缓存文件夹中,一会之后进行删除。

而IIS7定义什么文件是经常访问的符合压缩标准的方法是system.webServer/serverRuntime中的以下两个属性,frequentHitThreshold和frequentHitTimePeriod 。如果IIS在frequentHitTimePeriod时间段内接收到了对某个静态文件的超过frequentHitThreshold闸值次数的访问,那么IIS7就会像IIS6一样压缩该静态文件并且将这个压缩后的版本长期保存在压缩文件的缓存文件夹内。如果用户访问网站某文件时,已经在缓存文件夹中存在该文件的缓存版本,那么IIS7是不会再判断frequentHitThreshhold这个逻辑而是直接返回压缩版本给浏览器。

这种设置的确很蛋疼,但是微软官方给出的答复是这样有利用提高服务器性能。。。那么如果想要让IIS7能够向IIS6一样做压缩的话,有两种解决方法,当然都是修改frequentHitThreshold和frequentHitTimePeriod这两个值:

第一种是在web.config中添加以下内容,将frequentHitThreshold调至1,将frequentHitTimePeriod调制10分钟

<system.webServer>

<serverRuntime enabled="true"

frequentHitThreshold="1"

frequentHitTimePeriod="00:10:00"/>

</system.webServer>

第二种方法是打开%windir%\system32\inetsrv\appcmd.exe,然后再命令行界面中输入以下命令字符串,然后回车

set config -section:system.webServer/serverRuntime -frequentHitThreshold:1

微软官方建议比较不激进的办法是不要调低frequentHitThreshold而是提高frequentHitTimePeriod,这样对服务器性能更适中。这里要提到的是,对于拥有VPS的朋友们,建议可以手动设置,而虚拟主机用户能不能设置就得看服务商了,我就很悲剧的改不了。大家试试看吧

时间: 2024-10-01 21:49:46

IIS6和IIS7对静态文件gzip压缩方式的相关文章

PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)_php技巧

apache的强大终于超出了我的想象,仅仅蜻蜓点水般触及了一点php皮毛,这点皮毛就在我原有的知识库基础上爆炸开来,好像PN结的"雪崩击穿"一样,让我想到了多种技术结合无限的应用前景. 由于九州未来的服务器限制流量,那么减少流量负载也就能减少金钱支出. 如何减少流量,最方便的办法就是用Gzip压缩,这个apache的gzip压缩是靠一个叫做zlib的类库和gzip的模块(mod_gzip.c)完成的,这玩意专门有一帮牛人研究,因为gzip本身就大名鼎鼎的,并且具有高压缩率开源的压缩原理

windows中IIS7.5/6开启GZip压缩

我们知道GZip压缩是一个非常好的东西,它可以大大节省服务器的带宽.GZip的压缩主要针对html等文本文件,它的压缩比例是很高的.一个100KB的网页,可能会压缩到只有10-20KB,带宽使用量将下降90%.通过消耗一定的CPU和内存资源来启用GZip,可以说是一件很划算的事情. 那么如何开启GZip压缩呢? 先说说Windows 2008上的操作方法,Windows 2008上运行的是IIS7.5. a.加一个服务器扩展:[Internet 信息服务(IIS)管理器]>>[Web 服务扩展

详解Nginx服务器的配置中开启文件Gzip压缩的方法_nginx

gzip(GNU- ZIP)是一种压缩技术.经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会块得多.gzip的压缩页面需要浏览 器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析.浏览器那里不需要我们担心,因为目前的巨大多数浏览器都支持解析gzip 过的页面. Nginx的压缩输出有一组gzip压缩指令来实现.相关指令位于http{-.}两个大括号之间. 下面大致讲一下配置开启gzip压缩的方法: 1.Vim打开Nginx配置文件 v

[转载]iis6配置使用页面Gzip压缩提速

[原文出处]http://www.netmkt.cn/get/user0/397/html/5692.html iis7默认就启用了Gzip压缩,节约带宽,流量,能够很明显的提升访问速度,但是iis6则没有,本文就是介绍如何通过配置开启iis6的Gzip压缩 一. HTTP压缩概述 HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法.HTTP压缩采用通用的压缩算法如gzip等压缩HTML.Javascript或CSS文件.压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的

apache启用gzip压缩的实现方法_Linux

一.gzip介绍 Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台.当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小.这取决于文件中的内容. 利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器.这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度. 网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个

php gzip压缩输出的实现方法_php实例

一.gzip介绍          gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992年10月31日第一次公开发布,版本号是0.1,目前的稳定版本是1.2.4.         Gzip主要用于Unix系统的文件压缩.我们在Linux中经常会用到后缀为.gz的文件,它们就是GZIP格式的.现今已经成为Internet 上使用非常普遍的一种数据压缩格式,或者说一种文件

PHP中开启gzip压缩的2种方法_php技巧

网页开启gzip压缩以后,其体积可以减小20%~90%,可以节省下大量的带宽,从而减少页面响应时间,提高用户体验. php配置改法: 复制代码 代码如下: zlib.output_compression = On ;开启gzip功能 zlib.output_compression_level = 4 ;gzip压缩级别,1~9,建议3~5 ;zlib.output_handler = ;gzip压缩方式,建议注释 php文件改法: 建议在页面开头写上,可以写到头部公共文件 复制代码 代码如下:

apache网页gzip压缩开启与规则

httpd.conf中打开deflate_Module和headers_Module模块,具体做法为将 如下两句前面的#去掉: LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so 在httpd.conf文件底部加入如下代码配置需要压缩的文件: <IfModule deflate_module> SetOutputFilter DEFLATE # Don

IIS7下js文件启用Gzip后却不压缩的解决方法_win服务器

IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题 将.js的MIME类型设置为application/javascript 再查看页面,已经启用了Gzip. 不过,几个天后又发现有的js文件被压缩,有的却没有 查找原因发现是引用js文件是没有设置type <script></script> <script src="A.js"></script> 加上type="text/java