IIS 7.5 上的 GZip 压缩不起作用

IIS 7.5 上的 GZip 压缩不起作用

<system.webServer>我正在尝试在 IIS 下为我的静态文件支持 GZip 压缩(默认情况下应该启用但实际上没有),但目前还没有成功。以下是Web 应用程序的 web.config 文件中 node下的部分;

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

<urlCompression doStaticCompression="true" />

我尝试使用 Google Chrome。以下是请求标头;

接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8

接受字符集:ISO-8859-1,utf-8;q=0.7,*;q=0.3

接受编码:gzip,deflate,sdch

接受语言:en-US,en;q=0.8

缓存控制:无缓存

连接:保持活动

主机:我的网站网址

Pragma:无缓存

用户代理:Mozilla/5.0 (Windows NT 6.0) AppleWebKit/534.30 (KHTML,如 Gecko) Chrome/12.0.742.122 Safari/534.30

这些是响应标头;

接受范围:字节

内容长度:232651

内容类型:应用程序/x-javascript

日期:2011 年 8 月 4 日星期四 08:58:19 GMT

ETag:“a69135734a50cc1:0”

最后修改时间:2011 年 8 月 1 日星期一 12:56:37 GMT

服务器:Microsoft-IIS/7.5

X-Powered-By:ASP.NET

我检查了 applicationHost.config 文件并发现了一些如下所示的节点;

----

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Deny" />

----

<section name="urlCompression" overrideModeDefault="Allow" />

----

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

----

<urlCompression />

我在这里遗漏了什么?

答案1

看来您可能没有正确设置临时压缩文件夹的权限。您需要确保运行 IIS 安装(或应用程序)的用户对压缩文件夹具有写入权限。

更多详情

答案2

经过大量搜索,我终于找到了在 IIS 7.5 上压缩文件的方法。首先,除非文件加载频率足够高,否则 IIS 不会压缩文件。这就引出了一个问题:“IIS 认为什么频率才算足够高?”好吧,默认值是每 10 秒 2 次。哎呀!

可以在 web.config 中更改此设置,但需要先在 applicationHost.config 中解锁该部分。命令如下:

首先解锁部分:

C:\Windows\System32\inetsrv\appcmd.exe 解锁配置/section:system.webServer/serverRuntime

在配置路径“MACHINE/WEBROOT/APPHOST”处解锁部分“system.webServer/serverRuntime”。

现在完成了,编辑 web.config 文件并添加 serverRuntime 元素:

<?xml version="1.0" encoding="UTF-8"?> <configuration>
    <system.webServer>
        <serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="10:00:00" />
        ...

在本例中,我将其设置为每 10 小时访问一次文件。您可以根据需要调整值。以下是解释 serverRuntime 元素的文档:

http://www.iis.net/configreference/system.webserver/serverruntime

我希望这也能帮助你的压缩正常工作。

注意:您也可以在 applicationHost.config 文件中设置 serverRuntime 元素,但我选择在 web.config 中更改它,因为我们拥有多个服务器和包含各种站点的服务器场,从这个粒度级别来控制它对我来说更容易。

答案3

这对我有用:

 <urlCompression doStaticCompression="true" doDynamicCompression="true" dynamicCompressionBeforeCache="true" />
<httpCompression noCompressionForRange="false" noCompressionForHttp10="false" noCompressionForProxies="false">
  <dynamicTypes>
    <add mimeType="text/css" enabled="true" />
  </dynamicTypes>
  <staticTypes>
    <add mimeType="text/css" enabled="true" />
  </staticTypes>
 <staticTypes>
    <add mimeType="text/javascript" enabled="true" />
  </staticTypes>
</httpCompression>

还有 text/javascript mime-type,但您只有一个应用程序。这是一个问题,直到我添加了 text/...

相关内容