gpt4 book ai didi

c++ - QNetworkAccessManager 的替代品

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:29:03 26 4
gpt4 key购买 nike

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

最佳答案

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

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

还要考虑服务器的负载。小型普通 Web 服务器每秒处理约 100 个请求。如果您的客户端执行如此频繁的请求,恐怕服务器不会很高兴地欢迎您的申请。

因此考虑手动限制请求密度,要么仅在平移速度低于阈值时发送请求,要么保留一个固定大小的待处理请求队列并仅在队列未满时才发出新请求。只是避免请求泛滥。无论您进行何种优化,它对低带宽客户端或任何不那么空闲的服务器都没有好处。

关于c++ - QNetworkAccessManager 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14827212/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com