QNetworkAccessManager的替代方案

时间:2013-02-12 07:04:04

标签: c++ qt httprequest blackberry-10 qnetworkaccessmanager

我正在BB10中绘制地图。地图分为瓷砖。在开始时,用户给出经度,纬度和缩放级别,并在该坐标处显示地图。我通过使用QNetworkAccessManager执行http请求获得单个磁贴。首先下载7x5磁贴。但问题是用户在屏幕上开始非常快速地进行平移并且有时会继续这样做,然后在用户停止平移后,下载时会有很大的延迟。每次用户进行平移时,都会下载一些新的磁贴以显示在屏幕上。现在因为用户继续平移一段时间,QNetworkAccessManager有太多不必要的网络请求。我猜这就是为什么瓷砖下载很慢。我尝试使用abort()方法为不必要的请求中止QNetworkAccessManager的QNetoworkReply。但它仍然很慢。有没有其他方法可以实现我的目标?感谢。

1 个答案:

答案 0 :(得分:1)

我个人认为问题是你做了太多不必要的联系。

通常,HTTP被认为是一种有点重量级的协议。它建立在TCP之上,因此它需要3次握手来建立和4次握手才能终止,而不是考虑生成和解析这些HTTP头的时间。

还要考虑服务器的负载。一个小的普通Web服务器每秒处理大约100个请求。如果您的客户正在执行此类频繁请求,我担心服务器不会非常乐意欢迎您的申请。

因此,请考虑手动限制请求密度,方法是仅在平移速度低于阈值时发送请求,或者保留固定大小的待处理请求队列,并仅在队列未满时发出新请求。只是避免充斥请求。无论是低带宽客户端还是任何不那么空闲的服务器,无论你有什么优化,都没有好处。