Gzip不工作,服务器2012,IIS 8

时间:2016-07-28 13:51:31

标签: 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未修改 Accept-Ranges:字节 ETag:" 0a354779de8d11:0" 服务器:Microsoft-IIS / 8.0 X-Powered-By:ASP.NET 日期:星期四,2016年7月28日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>

1 个答案:

答案 0 :(得分:0)

以下是我将如何解决此问题:

我在这里使用PowerShell,但您也可以使用GUI或其他工具:

确保安装了失败的请求跟踪模块:

Enable-WindowsOptionalFeature -Online -FeatureName IIS-HttpTracing

启用您网站的跟踪(更改名称):

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.applicationHost/sites/site[@name='Default Web Site']/traceFailedRequestsLogging" -name "enabled" -value "True"

设置跟踪:

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.webServer/tracing/traceFailedRequests" -name "." -value @{path='*.html'}
Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.webServer/tracing/traceFailedRequests/add[@path='*.html']/traceAreas" -name "." -value @{provider='WWW Server';areas='Compression';verbosity='Verbose'}
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST/Default Web Site'  -filter "system.webServer/tracing/traceFailedRequests/add[@path='*.html']/failureDefinitions" -name "statusCodes" -value "200,304"

你最终会在web.config中找到类似的东西:

<system.webServer>
    <tracing>
        <traceFailedRequests>
            <add path="*.html">
                <traceAreas>
                    <add provider="WWW Server" areas="Compression" verbosity="Verbose" />
                </traceAreas>
                <failureDefinitions statusCodes="200,304" />
            </add>
        </traceFailedRequests>
    </tracing>
</system.webServer>

我将其限制为http状态为200或304的html文件,我们只对Compression感兴趣。你可能想要改变它。

现在,您可以多次访问您的网站,然后查看

C:\inetpub\logs\FailedReqLogFiles\W3SVCx

对于某些文件,将它们复制到您的工作站,因为在服务器上打开它们很痛苦。

打开XML文件并单击Request Details标签,现在搜索Compression您应该看到有关压缩过程的详细信息或请求未压缩的原因,例如{{ 1}}或NOT_FREQUENTLY_HIT