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>

参考文献:-