Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSON内容压缩在使用Azure WebRole一段时间后停止工作_Azure_Azure Web Roles_Iis 8_Http Compression - Fatal编程技术网

JSON内容压缩在使用Azure WebRole一段时间后停止工作

JSON内容压缩在使用Azure WebRole一段时间后停止工作,azure,azure-web-roles,iis-8,http-compression,Azure,Azure Web Roles,Iis 8,Http Compression,在这篇MSDN文章之后,我在Azure中为我的Web API配置了JSON压缩 我发布我的角色并开始测试,根据Fiddler的说法一切都很好 以下是一个示例请求标头: GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1 Accept: application/json Host: x.cloudapp.net:8080 Accept-Encoding: gzip GET http://xyz HTTP/1.1 Accept: application/

在这篇MSDN文章之后,我在Azure中为我的Web API配置了JSON压缩

我发布我的角色并开始测试,根据Fiddler的说法一切都很好

以下是一个示例请求标头:

GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
GET http://xyz HTTP/1.1
Accept: application/json
Host: sp-test-server2012.cloudapp.net:8080
Accept-Encoding: gzip
下面是一个响应头示例:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:38 GMT
Content-Length: 2472
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:44 GMT
Content-Length: 16255
只需几次Web API调用(如6秒后),所有响应都不再压缩

请求标头:

GET http://x.cloudapp.net:8080/api/xyz HTTP/1.1
Accept: application/json
Host: x.cloudapp.net:8080
Accept-Encoding: gzip
GET http://xyz HTTP/1.1
Accept: application/json
Host: sp-test-server2012.cloudapp.net:8080
Accept-Encoding: gzip
响应标题:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Content-Encoding: gzip
Expires: -1
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:38 GMT
Content-Length: 2472
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Thu, 18 Jul 2013 22:27:44 GMT
Content-Length: 16255
注意第二个响应中缺少的内容编码

因此,我得到了几百个被压缩的调用,然后剩下的大部分被解压。我时不时地看到另一个响应被压缩。或者,如果我停止测试一段时间,然后恢复,似乎压缩又开始了

IIS8中的压缩是“限制”还是什么?比如说,如果CPU快用完了,IIS会停止压缩吗

在Azure中监视我的WebRole时,在高负载测试期间,我的CPU使用率可以超过90%。很难说这是否与结果缺乏压缩有关。内存使用似乎根本不是问题


我希望这是更可靠和可预测的

嗯,显然昨天我的谷歌Fu让我失望了。我今天找到了答案,IIS确实会或不会根据CPU使用情况动态压缩内容

有两种设置可控制动态压缩。其中一个指定禁用它的时间:
dynamicCompressionDisableCpuUsage
,默认为90%。另一个指定何时重新启用它,默认为50%


您学到的东西。

本文可能有助于强制压缩:

当然,在高负载情况下,他们会对CPU时间收费