是什么让Fiddler加速我的iOS app休息电话?

时间:2014-02-14 17:00:50

标签: wcf debugging rest fiddler

我的iOS应用程序对我的WCF Web服务进行Rest调用。

响应速度非常慢,超过3分钟。

但是,当我将Fiddler设置为代理以监控iOS流量时。电话会议在1秒内完成。

让Fiddler神奇地加速来自iOS的Rest调用是什么?

P.S。 Fiddler是在Windows PC上安装的,与iOS App使用相同的网络。

其余的电话示例(来自Fiddler)

请求

GET https://xxxx.xxxx.com/Deals HTTP/1.1
Host: xxx.xxxx.com
Proxy-Connection: keep-alive
Accept-Encoding: gzip
Content-Type: application/json
Cookie:     ASPXAUTH=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Connection: keep-alive
User-Agent: Natural xxxx x.x.x (iPad; iPhone OS 7.0.2; en_US)

响应

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 891437
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
LastFetchDateTimeUTC: 2014-02-14T16:52:43.5465273Z
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Fri, 14 Feb 2014 16:52:45 GMT

响应体是一个大型的json(2MB)

P.S。

除了Fiddler之外,我们还尝试安装wireshark并在模拟器上运行应用程序时使用它来捕获mac上的流量。 我们看到很多DUP ACK,我猜这会导致tcp重新传输

P.S。

我们也在iOS上发布,WCF网络服务没有延迟。

帮助!

更新:

我们发现了一个问题,看起来响应时间随着身体的长度而减少。这有什么意义吗?

2 个答案:

答案 0 :(得分:1)

WireShark日志应该为您提供有关每种情况下发生情况的大量信息。当Fiddler“神奇地”使事情变得更快时,通常是由于:

  • 更好的连接重用(例如,Fiddler可能比客户端更好地重用连接)
  • 更好的缓冲区大小(例如,不使用微小的缓冲区进行读/写)
  • 非破坏代理确定行为

我在this blog post中写了一些关于这些的内容。

答案 1 :(得分:0)

我们通过证明服务器是一个糟糕的服务器来解决这个问题。我们在另一台虚拟机上部署了相同的服必须是破碎的网卡