Azure Web 应用不使用 GZip 压缩
Azure Web App Not Using GZip Compression
我正在使用 WebPageTest 来测试我的 Azure Web 应用程序 (ASP.Net vNext Web API/Angular) 的性能。 "Compress Transfer" 和 "Cache Static Content".
我都得了 F
在搜索 Whosebug 和 Google 后,我将以下内容添加到我的 web.config:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/x-javascript"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/atom+xml;charset=utf-8"/>
</dynamicTypes>
<staticTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/xaml+xml"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
</staticTypes>
</httpCompression>
和
<staticContent>
<!-- Set expire headers to 30 days for static content-->
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
重新部署我的 Web 应用程序后,我重新运行 测试,但我仍然为他们两个获得 F。尽管我已将这些设置添加到 web.config,但 Azure Web App 似乎并未遵守它们。
此外,我发现某些 Web 应用程序层不允许压缩,但我 运行 在 S2 上,我确认它确实允许压缩。
如有任何帮助,我们将不胜感激!
谢谢!
默认情况下为 Azure Web 应用程序启用 gzip 压缩。您可以在站点 LocalSiteRoot/Config/applicationhost.config 中查看规则。查看响应 headers(可以使用开发人员工具轻松完成)应该确认正在使用 gzip。您的站点加载的资源之一可能未压缩,这会导致 WebPageTest 失败。我会查看网络捕获和响应 headers,如果您担心的话,看看是否可以找到有问题的资源。
要转到本地站点根目录,您可以使用 FTP,或转到您的 SCM 站点 https://.scm.azurewebsites.net/DebugConsole,然后单击地球图标。
我还怀疑你的 2 javascript 文件没有被压缩,因为 Content-Type header 没有被填充,所以规则没有捕获它,因为它不识别模仿类型。
只是在这里备份@theadriangreen - 这将是一个 header 问题。我发现在 web.config 中添加类型是不可靠的。
你需要做的是编辑存储在蔚蓝最黑暗部分的applicationHost.config文件。最简单的方法是在 Azure 门户或 Kudu 中安装 IIS 管理器扩展。可以通过 .scm.azurewebsites.net 访问 Kudu。
您可以在那里编辑文件,它会为您保存一个 xdt - 一旦您重新启动应用程序,您应该会发现 xdt 已应用。
或者,您可以将 applicationHost.xdt 添加到您的应用程序根目录,这样就可以了。这是一个示例。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<httpCompression>
<dynamicTypes>
<add mimeType="application/json;charset=utf-8" enabled="true" xdt:Transform="InsertAfter(/configuration/system.webServer/httpCompression/dynamicTypes/add[(@mimeType='application/json')])" />
</dynamicTypes>
</httpCompression>
</system.webServer>
</configuration>
参考文献:-
我正在使用 WebPageTest 来测试我的 Azure Web 应用程序 (ASP.Net vNext Web API/Angular) 的性能。 "Compress Transfer" 和 "Cache Static Content".
我都得了 F在搜索 Whosebug 和 Google 后,我将以下内容添加到我的 web.config:
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<httpCompression>
<dynamicTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/x-javascript"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/atom+xml;charset=utf-8"/>
</dynamicTypes>
<staticTypes>
<clear />
<remove mimeType="*/*" />
<add enabled="true" mimeType="text/*"/>
<add enabled="true" mimeType="message/*"/>
<add enabled="true" mimeType="application/javascript"/>
<add enabled="true" mimeType="application/atom+xml"/>
<add enabled="true" mimeType="application/xaml+xml"/>
<add enabled="true" mimeType="application/json"/>
<add enabled="false" mimeType="*/*"/>
</staticTypes>
</httpCompression>
和
<staticContent>
<!-- Set expire headers to 30 days for static content-->
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
重新部署我的 Web 应用程序后,我重新运行 测试,但我仍然为他们两个获得 F。尽管我已将这些设置添加到 web.config,但 Azure Web App 似乎并未遵守它们。
此外,我发现某些 Web 应用程序层不允许压缩,但我 运行 在 S2 上,我确认它确实允许压缩。
如有任何帮助,我们将不胜感激!
谢谢!
默认情况下为 Azure Web 应用程序启用 gzip 压缩。您可以在站点 LocalSiteRoot/Config/applicationhost.config 中查看规则。查看响应 headers(可以使用开发人员工具轻松完成)应该确认正在使用 gzip。您的站点加载的资源之一可能未压缩,这会导致 WebPageTest 失败。我会查看网络捕获和响应 headers,如果您担心的话,看看是否可以找到有问题的资源。
要转到本地站点根目录,您可以使用 FTP,或转到您的 SCM 站点 https://.scm.azurewebsites.net/DebugConsole,然后单击地球图标。
我还怀疑你的 2 javascript 文件没有被压缩,因为 Content-Type header 没有被填充,所以规则没有捕获它,因为它不识别模仿类型。
只是在这里备份@theadriangreen - 这将是一个 header 问题。我发现在 web.config 中添加类型是不可靠的。
你需要做的是编辑存储在蔚蓝最黑暗部分的applicationHost.config文件。最简单的方法是在 Azure 门户或 Kudu 中安装 IIS 管理器扩展。可以通过 .scm.azurewebsites.net 访问 Kudu。
您可以在那里编辑文件,它会为您保存一个 xdt - 一旦您重新启动应用程序,您应该会发现 xdt 已应用。
或者,您可以将 applicationHost.xdt 添加到您的应用程序根目录,这样就可以了。这是一个示例。
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<httpCompression>
<dynamicTypes>
<add mimeType="application/json;charset=utf-8" enabled="true" xdt:Transform="InsertAfter(/configuration/system.webServer/httpCompression/dynamicTypes/add[(@mimeType='application/json')])" />
</dynamicTypes>
</httpCompression>
</system.webServer>
</configuration>
参考文献:-