Azure Web应用程序未使用GZip压缩
我正在使用WebGetTest测试我的Azure Web应用程序(ASP.Net vNext Web API/Angular)的性能。对于“压缩传输”和“缓存静态内容”,我都得到了F 在搜索StackOverflow和Google之后,我在我的web.config中添加了以下内容: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>
<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>