http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 13384|回复: 6

[IIS] IIS6.0下启动和配置Gzip压缩教程

[复制链接]
发表于 2013-8-26 09:01:50 | 显示全部楼层 |阅读模式
IIS其实是自带的就有这个功能,我们只需要启用就行了
方法很简单如下
我们右键网站--属性--服务
sufei123.png
然后启动Http压缩就行了
还可以给我们的Gzip压缩指定目录和大小,这个设置的是压缩缓存目录的位置和大小
这是第一步然后还要添加一个服务扩展才行,
Web服务扩展---我们单击添加
sufei1.png
C:WINDOWS\system32\inetsrv\gzip.dll
添加这个Dll,名称随便起吧
QQ截图20130826084034.jpg
添加后启用就行了
这个时候我们就已经成功设置了IIS的Gzip压缩功能
但是要压缩那些文件呢,这个我们还要再进行配置
配置的方法也很简单,
大家找到这个Xml文件
C:Windows\System32\inetsrv\MetaBase.xml
大家一定要注意先备份
如果出问题就没有办法回来了
然后找到如下代码
[code=html]<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%system32inetsrvgzip.dll"
    HcCreateFlags="0"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="true"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
           html
           txt
           js
           css 
           swf
           xml"
    HcOnDemandCompLevel="9"
    HcPriority="1"
    HcScriptFileExtensions="asp 
      aspx
      dll
      exe"
  >
</IIsCompressionScheme>
<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%system32inetsrvgzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="true"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
           html
           txt
           js
           css 
           swf
           xml"
    HcOnDemandCompLevel="9"
    HcPriority="1"
    HcScriptFileExtensions="asp 
      aspx
      dll
      exe"
  >
</IIsCompressionScheme>[/code]
    HcDynamicCompressionLevel的值是压缩率0到10 建议设置为9
    HcDoStaticCompression="true" 默认为Fase设置为True就可以了。
这一共是两段,
<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/deflate"

<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/gzip"
一定要设置的一样
设置完之后保存就行了,
这个文件默认是不能直接保存的,因为IIS正在使用,我们需要先停止IIS的服务才能编辑这个Xml,
保存后再启用IIS的服务就行了
,还有一个方法就是
QQ截图20130826085834.jpg
对只要设置一下这个属性就行
默认是不选中的
设置完成之后我们一起来看看获取到的网页头信息
sufei2.png
这就说明启用成功了
下面以我的网站为例子看一下站长站的检查结果吧
QQ截图20130826090106.jpg
这功能虽小,但是比较你再怎么优化都省流量。
75Kb的文件,一下子变成了15KB,太给力了


本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2013-8-27 20:25:39 | 显示全部楼层
非常支持飞哥分享!
发表于 2013-11-1 13:14:44 | 显示全部楼层
IIS7.0如何操作啊,没有你说的“服务”
 楼主| 发表于 2013-11-1 13:21:19 | 显示全部楼层
party620 发表于 2013-11-1 13:14
IIS7.0如何操作啊,没有你说的“服务”

老大你都说了 IIs7了,怎么可能和这里一样啊,
  1. 启用对静态内容的 HTTP 压缩

  2. 您可以通过以下方法执行此过程:使用用户界面 (UI)、在命令行窗口中运行 Appcmd.exe 命令、直接编辑配置文件或编写 WMI 脚本。
  3. 用户界面
  4. 使用 UI
  5. 打开 IIS 管理器,然后导航至您要管理的级别。 有关如何打开 IIS 管理器的信息,请参阅 打开 IIS 管理器 (IIS 7)。 有关如何在 UI 的各个位置间进行导航的信息,请参阅 在 IIS 管理器中导航 (IIS 7)。
  6. 在“功能视图”中,双击“压缩”。
  7. 在“压缩”页上,选中“启用静态内容压缩”旁边的框。
  8. 在“操作”窗格中,单击“应用”。
  9. 命令行
  10. 若要启用对静态内容的 HTTP 压缩,请在命令提示符处键入如下命令,然后按 Enter:
  11. appcmd set config /section:urlCompression /doStaticCompression:True
  12. 有关 Appcmd.exe 的详细信息,请参阅 Appcmd.exe (IIS 7) 。
  13. 配置
  14. 本主题中的过程会影响以下配置元素:
  15. <urlCompression>
  16. 有关 IIS 7 配置的详细信息,请参阅 MSDN 上的 IIS 7.0:IIS 设置架构(可能为英文页面)。
  17. WMI
  18. 请使用以下 WMI 类、方法或属性执行此过程:
  19. HttpCompressionSection.Schemes.DoStaticCompression 属性

  20. HttpCompressionSchemeElement 类

  21. 有关 WMI 和 IIS 的详细信息,请参阅 IIS 7 中的 Windows Management Instrumentation (WMI)。 有关与此过程关联的类、方法或属性的更多信息,请参阅 MSDN 网站上的 IIS WMI 提供程序参考(可能为英文页面)。

  22. 注:默认情况下只会在你网站根目录有效果,如果想让 js,css 文件夹里使用GZIP,那么则需要在站点里相应的目录下执行以上操作

  23. 讲一下如果配置了,可以在
  24. http://tool.chinaz.com/Gzips/
  25. 测试,当然可以具体到css和js 例如(..com/js/js.js).

  26. 当然有可能这样配置后无效,解决方法如下:
  27. 先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上
  28. 有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript
  29. 偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的。
  30. 当然最好在上传JS前对JS进行一次压缩这样效果会更好啦。 可以到网上找找TBCompressor工具,这个工具压缩不错
  31. 先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上
  32. 有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript
  33. 偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的。
  34. 当然最好在上传JS前对JS进行一次压缩这样效果会更好啦。 可以到网上找找TBCompressor工具,这个工具压缩不错

  35. IIS7下js文件启用Gzip后却不压缩的解决方法
  36. IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题
  37. 将.js的MIME类型设置为application/javascript
  38. 再查看页面,已经启用了Gzip。

  39. 不过,几个天后又发现有的js文件被压缩,有的却没有。
  40. 查找原因发现是引用js文件是没有设置type
  41. <script></script>
  42. <script src=”A.js”></script>
  43. 加上type="text/javascript"类型后问题解决。
  44. 偶尔失效(一会有效一会无效)的解决方法

  45. 3. 使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
  46. 找到Location =“/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
  47. 找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于设置deflate压缩。 上面两个节点紧挨着。并且设置的属性相同。
  48. 如果需要压缩动态文件,则将HcDoDynamicCompression设置为”TRUE“,
  49. 并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;
  50. 如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为”TRUE“,
  51. 并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;
  52. HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0。
  53. HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
  54. HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property
  55. 说明: 这两个属性值一般推荐设置为9, 具有最佳性价比。

  56. <IIsCompressionScheme    Location="/LM/W3SVC/Filters/Compression/gzip"
  57.     HcCompressionDll = "%windir%\system32\inetsrv\gzip.dll"
  58.     HcCreateFlags="1"
  59.     HcDoDynamicCompression="TRUE"
  60.     HcDoOnDemandCompression="TRUE"
  61.     HcDoStaticCompression="true"
  62.     HcDynamicCompressionLevel="9"
  63.     HcFileExtensions="htm
  64.         html
  65.         txt
  66.         js
  67.         css
  68.         swf
  69.         xml"
  70.     HcOnDemandCompLevel="9"
  71.     HcPriority="1"
  72.     HcScriptFileExtensions="asp
  73.     aspx
  74.     dll
  75.     exe">
  76. </IIsCompressionScheme>


  77. 注意
  78. 1. 在编辑MetaBase.xml前需要停止IIS,可以使用 net stop iisadmin
  79. 2. 修改完成后开启iisadmin服务,并执行iisreset命令
  80. 关于SEO的测试
  81. 压缩是否对SEO有影响,经测试,开启后仍然可以被很好的收录。
  82. 关于对SEO影响的研究文章,还可以参考下面的几篇文章。
  83. 具体的效率问题,将继续监控以作研究。

  84. 如果以上设置无效,或者MetaBase.xml没有响应节点,用以下方式解决

  85. 第一种是在web.config中添加以下内容,将frequentHitThreshold调至1,将frequentHitTimePeriod调制10分钟
  86. <system.webServer>
  87. <serverRuntime enabled="true"
  88. frequentHitThreshold="1"
  89. frequentHitTimePeriod="00:10:00"/>
  90. </system.webServer>
  91. 第二种方法是打开%windir%\system32\inetsrv\appcmd.exe,然后再命令行界面中输入以下命令字符串,然后回车
  92. set config -section:system.webServer/serverRuntime -frequentHitThreshold:1

  93. 如果 appcmd.exe 窗口执行无法停留,可以执行连续指令:
  94. %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
  95. %windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/serverRuntime -frequentHitTimePeriod: 00:10:00
复制代码
 楼主| 发表于 2013-11-1 13:22:06 | 显示全部楼层
party620 发表于 2013-11-1 13:14
IIS7.0如何操作啊,没有你说的“服务”

开启配置HTTP压缩(GZip)

在IIS7中配置Gzip压缩相比IIS6来说实在容易了许多,而且默认情况下就是启用GZip压缩的。如果没有,则可以再功能视图下找到“压缩”项,进入之后就会看到“静态内容压缩”和“动态内容压缩”两个选项,勾上即可。

image-thumb.png

image-thumb1.png

配置启用压缩的文件类型及其他选项

当开启GZip压缩之后,IIS并不是对所有内容都启用了压缩,而是有选择的进行压缩。遗憾的是,我们无法直接在IIS7管理器中配置这些压缩选项。我们首先需要在C:\Windows\System32\inetsrv\config文件夹下找到applicationhost.config文件,打开之后找到如下一节内容:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">    <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />    <dynamicTypes>        <add mimeType="text/*" enabled="true" />        <add mimeType="message/*" enabled="true" />        <add mimeType="application/x-javascript" enabled="true" />        <add mimeType="*/*" enabled="false" />    </dynamicTypes>    <staticTypes>        <add mimeType="text/*" enabled="true" />        <add mimeType="message/*" enabled="true" />        <add mimeType="application/javascript" enabled="true" />        <add mimeType="*/*" enabled="false" />    </staticTypes></httpCompression>

我们可以看到,IIS实际上是根据MIME类型来决定是否启用HTTP压缩的,以及压缩比之类的选项。可以看出,图片默认情况下是不被压缩的,这是因为图片的压缩比太低了。

我们注意到,对于Javascript来说,上面对不同的mime类型配置了不同的压缩方式。Javascript有三种常见的Mime类型,text/javascript,application/x-javascript,application/javascript。这三种类型都是合法的,在现代浏览器中也不存在什么差别。但是由于IIS7中Js文件的mime类型默认被设置为application/x-javascript,也就是说对于js文件,使用的是动态内容压缩而不是静态内容压缩,因此会导致js文件有时经过压缩的,有时却没有压缩。

image-thumb2.png

由于js文件通常稳定之后不会再被修改了,因此建议改成静态压缩——即把dynamicTypes这一节中的application/x-javascript挪到静态压缩节中。这样保证每次脚本都是被压缩过返回的。

静态压缩及动态压缩的区别

IIS7中的HTTP压缩分为“静态内容压缩”和“动态内容压缩”,其实这两个名字第一次接触很费解。什么是动态内容什么又是静态内容?实际上,准确的翻译应该是“静态压缩”和“动态压缩”。这两个词反应了IIS的压缩行为。对于配置在staticTypes节中的mime类型,将会启用静态压缩,也就是说,当文件第一次被请求的时候,IIS会将其压缩,然后放入临时文件夹中,下次再有人请求此文件时直接从临时文件夹中取出压缩后的版本而不用重新执行压缩的过程。配置在dynamicTypes一节中的mime类型的http请求都将启用动态压缩,即每一次请求,主机都会对请求的内容——可能是存放在文件系统中的静态文件,也可能是ISAPI返回的内容——进行压缩,而不会对其进行缓存。这个压缩比率因主机性能不同而会有所调整,所以我们在请求js文件的时候才会发现js文件有时压缩有时不压缩的情况。

显而易见,静态压缩会占用一定的存储空间,但是速度快,而动态压缩不占用存储空间,但是占用CPU时间,而且压缩比不恒定。而对于经过ISAPI的请求,则不能使用静态压缩方式。例如对于WCF返回的内容。


发表于 2018-12-12 08:53:06 来自移动端 | 显示全部楼层
收藏中
回复

使用道具 举报

发表于 2018-12-12 17:27:53 | 显示全部楼层
强烈支持楼主ing……
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-22 02:42

© 2014-2021

快速回复 返回顶部 返回列表