Gzip无法正常工作 - NO_MATCHING_SCHEME

时间:2016-08-03 06:41:39

标签: iis server compression gzip iis-8

在Windows Server 2012(标准版)上激活IIS 8上的Gzip的问题

  • 所以我在Windows功能中激活了压缩功能
  • 我检查了IIS中的两个复选框 - 压缩(动态和静态) 但仍然没有Gzip可用。但是,在我的localhost机器上(只是一个Windows 10),这可以工作。

我所看到的是,当我通过服务器localhost浏览我的网站时,gzip临时目录(C:\ inetpub \ temp \ IIS临时压缩文件)正在填满。但奇怪的是,我没有看到任何Gzip-ped镀铬。

唯一的标题(在chrome中)是:HTTP / 1.1 304 Not Modified Accept-Ranges:bytes ETag:" 0a354779de8d11:0"服务器:Microsoft-IIS / 8.0 X-Powered-By:ASP.NET日期:星期四,28 Jul 2016 13:41:04 GMT

(即使是yslow说没有激活gzip)

当我删除gzip临时文件夹时,通过“官方”浏览到该网站。网站网址,然后甚至都没有生成。

有谁知道这里发生了什么?

我在web.config中添加了这个

<httpCompression> 
 <staticTypes> 
  <add mimeType="text/*" enabled="true" /> 
  <add mimeType="message/*" enabled="true" /> 
  <add mimeType="application/javascript" enabled="true" /> 
  <add mimeType="application/x-javascript" enabled="true" /> 
  <add mimeType="image/jpeg" enabled="true" /> 
  <add mimeType="*/*" enabled="false" /> 
 </staticTypes> 
 <dynamicTypes> 
  <add mimeType="text/*" enabled="true" /> 
  <add mimeType="message/*" enabled="true" /> 
  <add mimeType="application/javascript" enabled="true" /> 
  <add mimeType="application/x-javascript" enabled="true" /> 
  <add mimeType="image/jpeg" enabled="true" /> 
  <add mimeType="*/*" enabled="false" /> 
 </dynamicTypes> 
 <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" dynamicCompressionLevel="4" /> 
</httpCompression>

请参阅此其他主题,其中我激活了更多日志信息Gzip not working, server 2012, IIS 8

我得到的是:

<RenderingInfo Culture="nl-BE">
 <Opcode>STATIC_COMPRESSION_NOT_SUCCESS</Opcode>
 <Keywords>
  <Keyword>Compression</Keyword>
 </Keywords>
 <freb:Description Data="Reason">NO_MATCHING_SCHEME</freb:Description>
</RenderingInfo>

1 个答案:

答案 0 :(得分:0)

您可以尝试将此添加到您的web.config文件中吗?我建议如此,因为它在IIS Windows共享主机上为我工作。它与您的代码类似,但有一些变化......

<system.webServer>
      <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/javascript" enabled="true"/>
          <add mimeType="application/javascript; charset=utf-8" 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="application/javascript; charset=utf-8" enabled="true"/>
          <add mimeType="application/x-javascript" enabled="true"/>
          <add mimeType="*/*" enabled="false"/>
        </staticTypes>

  </httpCompression>
  <urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>

我不确定您是否需要添加

<add mimeType="image/jpeg" enabled="true" />

jpeg不是压缩格式吗?如果你愿意,你可以添加它。

[可选]:我在MaxCdn阅读了这篇文章。

Origin服务器应该包括Vary:Accept-Encoding,以及如何:

<system.webServer>
  <httpProtocol>
    <customHeaders>
    <remove name="Vary"></remove>
    <add name="Vary" value="Accept-Encoding"></add>
    </customHeaders>
  </httpProtocol>
</system.webServer>

您也可以将此位添加到您的web.config文件中,通过浏览器的开发人员工具本身在请求标头中进行部署和检查。