我对运行 IIS 7.5 的服务器做了一些更改,web.config
以提高性能(主要是前端)。
第三方测试工具显示该网站运行的是“PHP/5.3.10,ASP.NET”,如果我没记错的话,它是 ASP.NET 4.5
我认为这是由于技术的奇怪混合(例如在 IIS 上运行 PHP)但接触任何东西都会让我感到紧张。
我添加了(仅)来自 expires 标头和 gzip 的指令H5BP IIS 服务器配置
我记得我是在 2013 年 1 月 15 日下午添加了这些指令。Pingdom 性能测试工具对该网站的测试历史记录如下:可在此处获得。
您可以看到传输大小急剧下降的位置(单击历史记录选项卡)。
从那时起,似乎每次我测试时,不同的文件(通常是 CSS 和 JS 等资源)都会毫无理由地使用或不使用 gzip。有时似乎所有内容都使用 gzip 提供,有时几乎没有任何内容似乎使用压缩提供,但通常介于两者之间(如您在历史记录中看到的那样)。
到底是怎么回事?
我该如何修复它?
该网站并未处于积极开发之中,虽然在 15 日之后向页面添加了一些额外数据(我添加的 Google Analytics 插件脚本以改进跟踪),但没有什么可以解释如此大的变化和不一致性。
我最好的猜测是它与用于压缩的 CPU 资源有关,并且这个问题看起来很接近:为什么 gzip 压缩在 IIS 中的效率有所不同?
答案1
我在这个页面的评论中发现了一个可能的罪魁祸首; weblog.west-wind.com
本质上,OOTB,仅当文件在 10 秒内被请求至少两次时,IIS 才会进行 gzip 压缩。
这是通过 web.config 进行调整的 - 不幸的是默认情况下它是锁定的,所以您必须编辑 applicationhost.config 以将 overrideModeDefault="DENY" 更改为 ALLOW。
参考资料在这里:论坛
相关配置片段如下。您将看到我还弄乱了 SVG 字体的内容类型,因为默认情况下 IIS 不会对它们进行 gzip 压缩,因此通过强制将它们转换为 text/xml,它们也会被压缩。(Google PageSpeed抱怨这个)
网页配置
<system.webServer>
<serverRuntime frequentHitThreshold="1" enabled="true" />
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
<remove fileExtension=".svg" />
<mimeMap fileExtension=".svg" mimeType="text/xml" />
</staticContent>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
<dynamicTypes>
<add mimeType="*/*" enabled="true" />
</dynamicTypes>
<staticTypes>
<add mimeType="image/svg+xml" enabled="true" />
<add mimeType="text/xml" enabled="true" />
<add mimeType="*/*" enabled="true" />
</staticTypes>
</httpCompression>
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
</system.webServer>
应用程序主机配置
<section name="serverRuntime" overrideModeDefault="Allow" />