Azure Web App不使用GZip压缩

jkr*_*r01 4 gzip http-compression azure http-caching azure-web-sites

我使用WebPageTest来测试Azure Web App的性能(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>
Run Code Online (Sandbox Code Playgroud)

<staticContent>
      <!-- Set expire headers to 30 days for static content-->
      <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)

重新部署我的Web应用程序后,我重新运行测试,我仍然为它们获得了一个F. 即使我已将这些设置添加到web.config,但Azure Web App似乎并不尊重它们.

此外,我发现一些Web应用程序层不允许压缩,但我在S2上运行,我验证它确实允许压缩.

任何帮助,将不胜感激!

谢谢!

the*_*een 13

Azure Web Apps默认启用gzip压缩.您可以在站点LocalSiteRoot/Config/applicationhost.config中查看规则.查看响应标头(可以使用开发人员工具轻松完成)应确认正在使用gzip.您的网站加载的资源之一可能未被压缩,这导致WebPageTest失败.我会查看网络捕获和响应标头,如果您担心,可以查看是否可以找到有问题的资源.

要转到本地站点根目录,您可以使用FTP,或者访问您的SCM站点https://.scm.azurewebsites.net/DebugConsole,然后单击地球图标. 在此输入图像描述

此外,我怀疑你的2个javascript文件没有被压缩,因为Content-Type标头没有被填充,所以规则没有捕获它,因为它无法识别mimetype.


Mar*_*rke 7

只是为了备份@theadriangreen - 这将是一个标题问题.我发现在web.config中添加类型是不可靠的.

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

在那里你可以编辑文件,它会为你保存一个xdt - 一旦你重新启动应用程序,你会发现xdt被应用了.

或者,您只需将applicationHost.xdt添加到App根目录即可.这是一个例子.

<?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>
Run Code Online (Sandbox Code Playgroud)

参考文献: -