在Azure网站上启用gzip压缩

6

我有一个运行在Azure网站上的ASP.NET应用程序,使用标准层。我一直在尝试让它支持gzip压缩。我修改了我的web.config文件,在system.webServer下添加了以下内容:

<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <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="*/*" enabled="false"/>
    </dynamicTypes>
    <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="*/*" enabled="false"/>
     </staticTypes>
</httpCompression>

在本地使用IIS Express运行时这个方法是有效的,但是发布到Azure后不工作。响应内容包含以下头信息。

Accept-Ranges:bytes
Content-Length:5381
Content-Type:text/css
Date:Fri, 04 Sep 2015 20:44:01 GMT
ETag:"56386b2e88dad01:0"
Last-Modified:Wed, 19 Aug 2015 14:06:02 GMT
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET

1
我认为在Azure网站中,默认情况下启用了Gzip压缩,因此您不需要任何额外的配置...https://dev59.com/r2Uq5IYBdhLWcg3wKtbs - Aram
默认情况下,它对我不起作用。当我尝试将其添加到web.config时也无法正常工作。 - Jonathan
1个回答

5
您缺少 <scheme> 元素。
<scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />

更多信息请参考:

https://www.iis.net/configreference/system.webserver/httpcompression/scheme

此链接为有关IIS中http压缩方案的配置参考。
<urlCompression doStaticCompression="true" doDynamicCompression="true"/>
<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/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/x-javascript" enabled="true"/>
        <add mimeType="*/*" enabled="false"/>
     </staticTypes>
</httpCompression>

我最初有这个,但在调整配置时将其删除了。我刚刚再次添加它,但对我来说它不起作用。仍然没有进行gzip压缩。 - Jonathan
你是如何测试的?我测试了你的原始代码和我的代码,都按照预期工作。我只需要添加 <scheme> 就可以让它工作了。 - Bruno Faria
我正在查看网站响应中的标头。文件也没有经过压缩,仍然是原始大小。需要提到的是,当在本地使用IIS Express运行时,此代码确实可以工作,但在Azure上却不行。 - Jonathan
1
@Jonathan 你解决了这个问题吗?它让我抓狂,因为它不起作用。 - Darren
@Darren 抱歉,我不得不在性能上做出一些妥协并发布。我没有足够的时间来解决这个问题。这个问题让我很烦恼,直到我不能再花更多时间在它上面。也许将来我会重新考虑这个问题。如果你能解决这个问题,请告诉我,我真的很想知道它的原因。 - Jonathan
1
@Jonathan 今天我决定将网站从“澳大利亚-东南”迁移到“东亚”地区。现在它可以正常工作了。 - Darren

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接