我怎样才能在IIS7工作中获得gzip压缩?
我为IIS7安装了静态和动态压缩,并在我的应用程序Virtual Folder
级别设置了两个web.config
值。 据我了解,我不需要在服务器或站点级别启用压缩,并且可以使用我的web.config文件以每个文件夹为基础对其进行管理。
我在我的.config
文件中有两个设置,我已经设置为我的应用程序自定义gzip:
<httpCompression dynamicCompressionDisableCpuUsage="90"
dynamicCompressionEnableCpuUsage="0">
<scheme name="gzip" dll="%Windir%system32inetsrvgzip.dll" />
<dynamicTypes>
<remove mimeType="*/*"/>
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
</httpCompression>
<urlCompression doDynamicCompression="true"
dynamicCompressionBeforeCache="true" />
但是,当我运行该应用程序时,我可以清楚地看到没有使用gzip,因为我的页面大小是相同的。 我也使用YSlow作为FireFox,这也证实我的页面没有被粘贴。
我在这里错过了什么? 在IIS6中,指定文件类型并在0-10之间设置压缩级别非常简单。 我没有看到需要说明的文件类型或压缩级别,因为默认值似乎覆盖了文件类型,而且我没有在任何地方看到该级别。
在iis 7测试版中,forums.iis.net上有一个关于此的线程。 原来那个家伙没有安装模块,但这听起来像是你从开始的句子中判断出来的。
微软对他的重要建议是启用失败的请求追踪来找出发生了什么问题。 这可能是IIS7中最受关注的功能之一,但它肯定是最强大的功能之一。
如果在操作窗格中看不到“失败的请求追踪”,则需要使用“添加角色服务”向导(运行状况和诊断追踪)或通过Web平台安装程序将该功能添加到服务器(Products Server IIS:Tracing),然后关闭并重新打开IIS管理器。
接下来,重新运行你的测试。 这会生成一些日志信息供我们检查。
查看c: inetpub logs FailedReqLogFiles w3svcx。 您将看到一堆名为fr000xx.xml的文件。 在你的浏览器中打开它们中的任何一个。 (顺便说一句,如果你在任何地方复制这些文件,请确保freb.xsl在那里。另外,不要删除freb.xsl - 如果你这样做,只需删除整个目录或从另一个位置复制它,因为IIS只创建它每个文件夹一次。)
点击“请求详细信息”标签并选择“完成请求跟踪”。 在页面上搜索“压缩” - 你应该在几个地方找到它; 一次用于静态内容,一次用于动态内容。
如果您没有找到它们中的任何一个,则IIS配置不正确。 如果你确实找到了它们,你应该看到它们后面跟着一个compression_success和一个compression_do。 成功是自我解释的; 'do'表示它做了什么 - 在我的情况下,它显示“OriginalSize 1462784 CompressedSize 179482”
由于你的工作不正常,希望你会看到不同的东西来帮助你解决问题。
确保在完成后关闭此功能,方法是禁用网站操作窗格中的失败请求跟踪。
我们有一个类似的问题,事实证明,IIS7在这里执行一些动态的基于CPU的节流。
http://www.iis.net/ConfigReference/system.webServer/httpCompression
dynamicCompressionDisableCpuUsage
可选的uint属性。
指定将禁用动态压缩的CPU利用率的百分比。
注意:此属性充当动态压缩关闭时的CPU上限。 CPU利用率低于dynamicCompressionEnableCpuUsage属性中指定的值时,将重新启用动态压缩。
默认值是90。
dynamicCompressionEnableCpuUsage
可选的uint属性。
指定CPU使用率的百分比,低于该百分比将启用动态压缩。 该值必须介于0和100之间。平均CPU利用率每30秒计算一次。
注意:此属性用作较低的CPU限制,低于该限制时,会启用动态压缩。 当CPU利用率超过dynamicCompressionDisableCpuUsage属性中指定的值时,动态压缩将被禁用。
默认值是50。
请注意默认值 - 如果您的IIS7达到90%CPU使用率,它将禁用所有动态gzip内容,直到CPU使用率回落到50%以下!
此外,还有一些关于GZIP实际CPU成本的重要建议和基准。
http://weblogs.asp.net/owscott/archive/2009/02/22/iis-7-compression-good-bad-how-much.aspx
长话短说,除非你经常拥有超过200kb的动态页面,这是一个没有问题的问题。
遵循JohnW的出色建议,我也使日志能够找到罪魁祸首,尽管失败的原因证明是不同的:
STATIC_COMPRESSION_NOT_SUCCESS
Reason 14
Reason NOT_FREQUENTLY_HIT
总之,看起来如果你没有足够频繁地浏览页面,IIS7就不会认为它值得压缩,这对我来说似乎有点奇怪。 尽管如此,在这种情况下是有道理的,因为我只是试图在本地机器上测试它。
根据此页面,默认情况下,页面必须在10秒内点击2次才能成为“频繁击中”。 如果你真的想,你可以覆盖applicationHost.config(%systemroot% Windows System32 inetsrv config)中的默认值。 至少对我来说这是一个锁定的属性,所以你不能在自己的web.config中覆盖它。
<serverRuntime frequentHitThreshold="1" />
另外,我现在注意到,这里已经有了这个答案:在IIS7中,gzip文件不会保持这种状态。
链接地址: http://www.djcxy.com/p/43805.html