代码之家  ›  专栏  ›  技术社区  ›  Russ

如何在IIS7中实现gzip压缩?

  •  68
  • Russ  · 技术社区  · 16 年前

    我为IIS7安装了静态和动态压缩,并设置了两个 web.config 我的应用程序中的值 Virtual Folder 数量据我所知,我不再需要在服务器或站点级别启用压缩,我可以使用我的web.config文件在每个文件夹的基础上管理它。

    .config 我已设置为自定义我的应用程序的gzip的文件:

    <httpCompression dynamicCompressionDisableCpuUsage="90"
        dynamicCompressionEnableCpuUsage="0">
      <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
      <dynamicTypes>
        <remove mimeType="*/*"/>
        <add mimeType="*/*" enabled="true" />
      </dynamicTypes>
    </httpCompression>
    <urlCompression doDynamicCompression="true"
        dynamicCompressionBeforeCache="true" />
    

    但是,当我运行应用程序时,我可以清楚地看到没有使用gzip,因为我的页面大小是相同的。我也在使用 YSlow

    我错过了什么?在IIS6中,只需指定文件类型,并将压缩级别设置在0-10之间。我认为没有必要指定文件类型或压缩级别,因为默认值似乎涵盖了文件类型,而我在任何地方都看不到级别。

    7 回复  |  直到 11 年前
        1
  •  64
  •   Zhaph - Ben Duguid    12 年前

    在iis 7测试期间,forums.iis.net上有一条关于此的帖子。原来那家伙没有安装模块,但听起来你已经从开场白中排除了这一点。

    • 单击“启用”。
    • 然后,在features视图中,单击“失败的请求跟踪规则”。单击添加,下一步,输入200作为状态代码,下一步,单击完成。

    单击“请求详细信息”选项卡并选择“完成请求跟踪”。在页面中搜索“压缩”-您应该在多个区域中找到它;一次用于静态内容,一次用于动态内容。

    如果找不到其中任何一个,则表明IIS配置不正确。如果你找到了它们,你应该先看到它们,然后是压缩成功和压缩完成。成功是不言而喻的;“do”表示它所做的事情——在我的例子中,它显示“原始尺寸1462784压缩尺寸179482”

    因为你的不起作用,希望你能看到一些不同的东西来帮助你解决问题。

        2
  •  28
  •   Community CDub    5 年前

    我们有一个类似的问题,结果是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使用率,它将 直到CPU使用率回落到50%以下!

    此外,这里还有一些关于GZIP实际CPU成本的建议和基准测试。

    http://weblogs.asp.net/owscott/archive/2009/02/22/iis-7-compression-good-bad-how-much.aspx

        3
  •  21
  •   Community CDub    8 年前

    STATIC_COMPRESSION_NOT_SUCCESS 
    Reason 14 
    Reason NOT_FREQUENTLY_HIT
    

    简言之,如果你没有足够频繁地点击页面,IIS7就会认为它不值得压缩,这对我来说有点奇怪。尽管如此,在这种情况下还是有意义的,因为我只是想在本地机器上测试它。

    根据 this page

    <serverRuntime frequentHitThreshold="1" />
    

    另外,我现在注意到,SO在这里已经有了这个答案: In IIS7, gzipped files do not stay that way .

        4
  •  5
  •   Eduardo    15 年前

        5
  •  5
  •   Jerod Venema    11 年前

    在Web.config文件的system.webServer部分中,添加以下行:

    <remove fileExtension=".js" />  
    <mimeMap fileExtension=".js" mimeType="application/x-javascript" />  
    

    IIS7中的压缩方案默认启用,但它只映射要压缩的单个javascript mime类型application/x-javascript。添加上面的行会告诉IIS将所有的.js文件都指定为mime类型,从而使压缩工作正常。

        6
  •  3
  •   Darren Kopp    16 年前

    这里有一个链接到 IIS config reference for compression :

        7
  •  0
  •   µBio    12 年前

    noCompressionForProxies
    

    因为我们是在一个代理上…我把自己从代理上拿下来,瞧,压缩。