一.摘要

本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度.

二.前言.

本文的知识点是从互联网收集整理, 主要来源于中文wiki.  使用YSlow检测网站启用了哪些优化时, Gzip是十分关键的一项. 启动Gip压缩将立竿见影的减少页面的网络传输大小.

三.HTTP压缩概述

HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法。HTTP压缩采用通用的压缩算法如gzip等压缩HTML、JavaScript或CSS文件。压缩的最大好处就是降低了网络传输的数据量,从而提高客户端浏览器的访问速度。当然,同时也会增加一点点服务器的负担。Gzip是比较常见的一种HTTP压缩算法。

四.HTTP压缩工作原理

Web服务器处理HTTP压缩的工作原理如下:

1.Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩; 
在用户浏览器发送请求的HTTP头中,  带有"Accept-Encoding: gzip, deflate"参数则表明支持gzip和deflate两种压缩算法.

2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名; 
静态文件和动态文件后缀启动要所都需要在MetaBase.xml中设置. 
静态文件需要设置: HcFileExtensions Metabase Property (单击跳转到MSDN说明) 
动态文件需要设置: HcScriptFileExtensions Metabase Property (单击跳转到MSDN说明)

3.如果请求文件是HTML、CSS等静态文件并且文件后缀启用了压缩,则Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

4.如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

6.如果请求文件是ASPX等动态文件并且文件后缀启用了压缩,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。

五. 在IIS中启用HTTP压缩

IIS默认并不支持HTTP压缩,需要进行简单的配置

1.打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制"; 

2.提醒: 经试验此步骤在本人机器上没有作用, 可以忽略. 
在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTP Compression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许"; 

3.使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份), 
找到Location ="/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩, 
找到Location ="/LM/W3SVC/Filters/Compression/deflate"用于设置deflate压缩. 
上面两个节点紧挨着.并且设置的属性相同.

如果需要压缩动态文件,则将HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为"TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0. 
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property 
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property

说明: 这两个属性值一般推荐设置为9, 具有最佳性价比.但是在我的window server 2003上, 压缩率无论如何设置, jQuery和jQuery UI两个文件(58k/188k)压缩后的大小一直相同.(20k/45k).

下面是我的实例:

<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/deflate"HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"HcCreateFlags="0"HcDoDynamicCompression="TRUE"HcDoOnDemandCompression="TRUE"HcDoStaticCompression="true"HcDynamicCompressionLevel="9"HcFileExtensions="htmhtmltxtjscss swfxml"HcOnDemandCompLevel="9"HcPriority="1"HcScriptFileExtensions="asp             aspxdllexe">
</IIsCompressionScheme>
<IIsCompressionScheme    Location ="/LM/W3SVC/Filters/Compression/gzip"HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"HcCreateFlags="1"HcDoDynamicCompression="TRUE"HcDoOnDemandCompression="TRUE"HcDoStaticCompression="true"HcDynamicCompressionLevel="9"HcFileExtensions="htmhtmltxtjscss swfxml"HcOnDemandCompLevel="9"HcPriority="1"HcScriptFileExtensions="asp             aspxdllexe">
</IIsCompressionScheme>

4.编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;

5.最后,重新启动IIS。可以到HTTP压缩测试网站验证结果.以jQuery为例, 核心类库和UI类库原始大小分别是57k和188k,压缩后分别是20k和45k: 
 
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩: 
  
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B: 
  
当同时启动了动态文件压缩时, Gzip压缩评级为A: 

六.要点总结

1. 在修改MetaBase.xml文件时, 要停止"IIS Admin Service"服务. 否则无法保存.

2.静态压缩和动态压缩率最好设置为9.

3.上文的步骤2, 即使不添加Web服务扩展效果也是相同的.

4.压缩率设置对js文件不起作用, 压缩后大小总是相同的.

5.图片文件即使启用了gzip压缩大小也没有变化.

七. 总结

本文总结了如何在IIS中启用Gzip压缩.  在半年前的项目中我为网站启用了Gzip, 今天整理此文主要为了整理自己的知识以便以后忘记时复习. 另外经查看ChinaCache公司提供的CDN也都启用了Gzip压缩.

IIS服务器下安装配置XCache缓存器方法及XCache下载

使用这个加速器可以很大程度的降低CPU占用(但会造成更多的内存占用),并使网页执行时间缩短。具体原理不介绍了,网上有很多

WIN2003+IIS6为php安装Xcache缓存器 
解压Xcache,把php_xcache.dll放在php.ini中指定extension_dir中(本例为"D:\php\ext). 
下面开始配置,打开php.ini 
添加(记得是添加,不要更换原来的zend_extension_ts参数) 
zend_extension_ts = "($extension_dir)\php_xcache.dll" 
配置的时候,把($extension_dir)替换成绝对路径ext(如:D:\php\ext\php_xcache.dll)才行的。需要放到Zend前面。 
添加以下项到php.ini末尾,可以直接复制以下配置...


[xcache.admin]
xcache.admin.enable_auth = Off
xcache.admin.user = "UserName" //可自行修改
xcache.admin.pass = "PassWord" //可自行修改
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 32M //可自行修改
xcache.count = 2 //可自行修改
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 2M
xcache.var_count = 2
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.test = Off
xcache.readonly_protection = Off
xcache.mmap_path = "xcache"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = Off
xcache.optimizer = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""

需要修改的值已经用蓝色标出,说明如下:


xcache.admin.enable_auth  XCache后台是否需要验证(这个后台在刚才下载的XCache的admin目录中,可以自由处理,如不需要请设置成Off)
xcache.admin.user XCache后台登陆用户名
xcache.admin.pass XCache后台登陆密码
xcache.size   XCache的内存缓存大小,普通网站建议设置为64MB,如果是IDC服务器,可以设置成256MB
xcache.count  设置为CPU的数量(双核算2个,比如我的是两个双核Xeon 3.0,就设置为4)
xcache.var_size
xcache.var_count  跟上两条一样
xcache.mmap_path  共享内存标识名,尽量用xcache,避免跟其它软件冲突
xcache.optimizer  优化器,如果没安装Zend可以开启,上面我们已经安装好Zend了,所以设置成Off

至此配置完毕,重新启动IIS即可...

需要注意的是

一旦你用了XCACHE你的所有php代码改动都必须重启iis才会生效!

Xcache下载地址 :
http://www.jb51.net/softs/41097.html
http://xcache.lighttpd.net/pub/Releases/

然后再次打开info.php,查找"XCache",如果找到相关XCache的信息,那代表配置正确...相关信息如下(图中所示的内容会因为参数配置不同而不尽相同): 
如果查找不到,请尝试以下疑难解答中的第三点... 
至于为什么不用extension,而用zend_extension_ts,因为这个发行版的xcache的接口是ZEND_API,直接用extension无法初始化。 
XCache疑难解答 
1.phpinfo()中显示没有加载php_xcache.dll 
   检查php_xcache.dll的NTFS权限是否正确,需要给网站用户(或者可以用Guests)只读权限。 
2.出现php内存错误 
   使用了extension调用php_xcache.dll,请尝试使用zend_extension_ts. 
3.打开网页没有响应,出现错误 Fatal error: [Zend Optimizer] Zend Optimizer *** is incompatible with XCache 1.2.2 
   这是因为安装了Zend导致,解决方法很简单,把调用php_xcache.dll的zend_extension_ts提到调用zend的前面.如: 
    zend_extension_manager.optimizer_ts="D:\Program Files\Zend\ZendOptimizer-3.3.0\lib\Optimizer-3.3.0" 
    zend_extension_ts="C:\php\ext\php_xcache.dll" 
    zend_extension_ts="C:\Program Files\Zend\ZendOptimizer-3.3.0\lib\ZendExtensionManager.dll" 
到此,XCache缓存器配置完毕

IIS开启了GZIP和XCACHE之后飞快相关推荐

  1. IIS开启伪静态后html静态页面无法访问的解决方法

    IIS开启伪静态后,发现原本存在的html静态页面无法访问了,显示的404错误.网上查了下,是因为实现伪静态就是使用 URLRewriter 来映射后缀,会把asp等动态页面映射成html,但是原来存 ...

  2. 万网m3 windows linux切换,万网M3-linux虚拟主机开启网页Gzip压缩方法

    广信之家给大家分享:万网M3-linux虚拟主机开启网页Gzip压缩方法,万网M3月流量30G,如果我们开启了网页Gzip压缩,不仅能提升网页的访问速度还可为我们节约空间的流量,所以网页Gzip压缩对 ...

  3. 压缩js和css, IIS开启Etags, IIS开启Gzip

    我们在前端页面性能调优时,经常会压缩js和css,下面列出几个比较好用的在线工具. http://www.jb51.net/tools/jsmin/index.htm http://javascrip ...

  4. IIS 7 启用 gzip 静态压缩 压缩js和css文件

    搞了很久,不如nginx好弄,不知道怎么修改压缩比,也不知道怎么压缩的规则是啥(管理器上没有写),不过反正出来了,一个js文件900多K变成了100多K 1.在web.config文件里面加上: &l ...

  5. thinkphp框架开启页面gzip压缩

    Thinkphp下开启gzip压缩很简单,不管你是哪个版本,只要在你的入口文件index.PHP中加入以下两行,如果你的服务器支持,那么就OK了. define ( "GZIP_ENABLE ...

  6. 在IIS上启用Gzip压缩 (HTTP压缩)方法

    本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小, 提高用户显示页面的速度. 一.摘要 本文总结了如何为使用IIS托管的网站启用Gzip压缩, 从而减少网页网络传输大小 ...

  7. 在IIS中使用Gzip压缩后传送数据

      使用Gzip压缩会增大服务器CPU的使用率但可以通过压缩而减少服务器向客户端发送的数据 ,若使用了Gzip压缩IIS在向客户端发送数据时会自动检测,如果客户端浏览器支持 IE6.0,firefox ...

  8. IIS启用页面Gzip压缩实现说明

    HTTP压缩是在Web服务器和浏览器间传输压缩文本内容的方法. HTTP压缩采用通用的压缩算法如gzip等压缩HTML.JavaScript或CSS文件. 压缩的最大好处就是降低了网络传输的数据量,从 ...

  9. linux宝塔如何开启gzip,宝塔nginx如何开启网站gzip

    直接上代码在nginx.conf文件中加入如下代码: gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers ...

  10. iis开启php验证码,php结合GD库实现中文验证码的简单方法

    前言 上一次写了一个常见的验证码,现在玩一下中文的验证码,顺便升级一下写的代码 流程基本差不多 先看GD库开启了没 生成中文5位验证码 开始画图 画干扰素 生成图形 完事 生成中文验证码 //小小心机 ...

最新文章

  1. Linux学习笔记033_10
  2. .net工具类 分享一个简单的随机分红包的实现方式
  3. 科大星云诗社动态20210412
  4. 法律专业计算机基础试卷答案,大学计算机基础试题及答案
  5. 函数使用了堆栈的字节超过_在C语言中如何访问堆栈?
  6. 学习php开发步骤,学习php设计模式 php实现模板方法模式
  7. windows下端口占用解决方法-查看和杀死占用端口进程
  8. 反转?MIT女博士遭质疑:代码贡献太少,黑洞照片功臣另有其人
  9. 总结:form中使用onSubmit=return false防止表单自动提交,以及s...
  10. C# 拼图游戏(超详细)
  11. 狗狗的年龄的python编程_狗狗与人年龄换算表,终于知道狗狗多大了!
  12. XDOJ 233/237-字符串复制
  13. 基于sqlite的android数据库编程,Android编程之SQLite数据库操作方法详解
  14. 使用 JAVA Swing 构建 Sftp 桌面连接工具
  15. HTTP 和 Request
  16. 埃森哲全球“技术展望2018”报告解析(附下载链接)
  17. Java(35):Java Base64编码和解码工具类
  18. opencv图像处理初步(一):灰度化和二值化
  19. NRF24l01无线模块调试心得!STM32_SPI驱动NRF24L01+
  20. CSS-transform 平面/空间(移动、旋转、缩放、过渡)略解以及示例

热门文章

  1. 多元统计分析假设检验
  2. Java编程语言的重要性
  3. 使用mmdetection检测并存储结果
  4. pe系统如何读取手机_pe系统没有连接手机的驱动怎么办
  5. 联想yoga13装win7步骤介绍
  6. 织梦采集侠推荐免登陆免规则伪原创发布配置
  7. Jboss的下载和安装
  8. UNIX编程艺术 UNIX哲学
  9. 计算机视觉基础概念、运行原理和应用案例详解
  10. 高等数学——详解洛必达法则