Azure Web应用程序未使用GZip压缩

Azure Web应用程序未使用GZip压缩,azure,gzip,azure-web-app-service,http-caching,http-compression,Azure,Gzip,Azure Web App Service,Http Caching,Http Compression,我正在使用WebGetTest测试我的Azure Web应用程序(ASP.Net vNext Web API/Angular)的性能。对于“压缩传输”和“缓存静态内容”,我都得到了F 在搜索StackOverflow和Google之后,我在我的web.config中添加了以下内容: <urlCompression doStaticCompression="true" doDynamicCompression="true" /> <httpCompression>

我正在使用WebGetTest测试我的Azure Web应用程序(ASP.Net vNext Web API/Angular)的性能。对于“压缩传输”和“缓存静态内容”,我都得到了F

在搜索StackOverflow和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>


在重新部署我的Web应用程序后,我重新运行了测试,但两个应用程序的测试结果仍然是F。尽管我已经将这些设置添加到了web.config,但Azure web App似乎并不认可这些设置

另外,我发现一些Web应用层不允许压缩,但我正在S2上运行,我验证了它确实允许压缩

任何帮助都将不胜感激


谢谢

默认情况下,Azure Web应用程序启用了gzip压缩。您可以在站点LocalSiteRoot/Config/applicationhost.Config中查看规则。查看响应头(可以很容易地通过开发人员工具完成)应该可以确认正在使用gzip。您的站点加载的资源之一可能未被压缩,这导致WebGetTest失败。我会查看一个网络捕获和响应头,如果您担心的话,看看是否可以找到有问题的资源

要转到本地站点根目录,可以使用FTP,或转到位于的SCM站点https://.scm.azurewebsites.net/DebugConsole 然后单击地球仪图标。


另外,我怀疑您的2个javascript文件没有得到压缩,因为内容类型标头没有填充,所以规则没有捕获它,因为它无法识别mimetype。

仅在此处备份@theadriangreen-这将是标头问题。我发现在web.config中添加类型是不可靠的

您需要做的是编辑存储在azure最黑暗部分的applicationHost.config文件。最简单的方法是在Azure门户或Kudu中安装IIS管理器扩展。Kudu可通过.scm.azurewebsites.net访问

在那里你可以编辑文件,它会为你保存一个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>



  • 有2个文件未被压缩发送。这两个都是我的Azure Web应用程序提供的javascript文件。当我打开开发工具时,如果我查看从GoogleCDN提供的javascript文件,它的响应头是“Content Encoding=gzip”。但是,当我查看Azure Web应用程序提供的2个javascript文件时,它们都没有此响应头。如何访问LocalSiteRoot/Config/applicationhost.Config?我在Azure Portal中单击我的web应用程序,然后单击“所有设置”。我没有看到任何显示LocalSiteRoot或config的内容。我已经编辑了我的答案,以显示如何访问LocalSiteRoot,并添加了我认为可能存在的问题。默认情况下,Gzip即使在IIS后面的Kestrel上运行的新ASP.NET 5(dnx)应用程序上也能正常工作。你仍然需要Kestrel中的静态文件处理程序,但在返回的过程中,IIS会将其检测为静态内容,并将其gzip或你在web.config中指定的任何内容(也适用于动态内容)。我跟随了你的帖子,试图压缩一个没有任何脚本的简单
    html
    页面,但我在azure中遇到了问题,这是我的问题。
    <?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>