我每隔5秒与服务器异步连接.URL是相同的,但每次更改POST主体.现在我每次都从头开始创建NSURL,NSURLRequest和NSURLConnection.
我认为设置连接一次更有效,并进一步使用它.我是新手,不确定是否可能.没有可变的NSURLConnection,但可能需要创建NSURLConnection,如:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: url]; NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
并更改NSMutableURLRequest POST数据以向服务器发送另一个请求.哪条路对不对?
我假设您关注的是创建HTTP连接的开销.NSURLConnection非常智能,可以使用HTTP/1.1并重用现有连接来处理此问题.它上次检查时不使用流水线操作,但出于您的目的,连接重用应该足够了.我鼓励你在这上面放一个网络嗅探器并确保它按照你的意愿工作.
创建对象本身的成本在每5秒一次的顺序是微不足道的,你不应该尝试优化它(当然你应该重用NSURL).这是开放与服务器的连接,这是昂贵的,尤其是在iPhone上.
如果您发现自己确实需要流水线操作,那么很遗憾,您必须自己动手.我听说CFHTTPStream可以做到,但我没有看到很多证据.CocoaAsyncSocket是低级访问套接字的最佳选择,无需编写低级代码.
由于单元网络上的延迟可能非常糟糕,因此您的连接可能需要超过5秒才能完成.确保在开始下一个连接之前完成一个连接,或者您将开始建立越来越多的开放连接.
为了澄清事情,NSURLConnection将重用现有的套接字,但仅限于相对较短的时间范围(12秒).如果您发送请求,请返回响应,并在12秒内发送第二个请求将在同一个套接字上发出的后续请求.否则,客户端将关闭套接字.已向Apple提交了一个错误,以增加此计时器或使其可配置.