C++ QNetworkAccessManager的替代方案

C++ QNetworkAccessManager的替代方案,c++,qt,httprequest,blackberry-10,qnetworkaccessmanager,C++,Qt,Httprequest,Blackberry 10,Qnetworkaccessmanager,我正在BB10上画地图。这张地图分为几块。开始时,用户给出经度、纬度和缩放级别,地图显示在该坐标处。我通过使用QNetworkAccessManager执行http请求来获得一个磁贴。首先下载7x5个磁贴。但问题是,当用户开始在屏幕上快速平移时,有时会继续这样做,然后在用户停止平移后,瓦片下载会有很大的延迟。每次用户进行平移时,都会下载一些新的互动程序以显示在屏幕上。现在,由于用户继续平移一段时间,QNetworkAccessManager有太多不必要的网络请求。我猜这就是为什么瓷砖下载很慢的原

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

我个人认为问题在于你建立了太多不必要的联系

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

也考虑服务器的负载。一个小型的普通web服务器每秒处理约100个请求。如果您的客户机执行如此频繁的请求,恐怕服务器不会太高兴地欢迎您的应用程序


考虑手动限制请求密度,或者只在摇摄速度低于阈值时发送请求,或者保留未决请求的固定大小队列,并且仅当队列未满时才发出新请求。只是避免请求泛滥。无论您有什么优化,低带宽客户端或任何不太空闲的服务器都没有好处。

我目前正面临一个非常类似的问题,试图为PC制作map client;我正在寻找子类QNetworkAccessManager来改进其功能,或者使用完全不同的库(如libcurl)来完成网络传输任务