我使用 Cordova 和 cordova-plugin-file-transfer 制作了一个 iPhone 应用程序,用于从相机胶卷上传视频。通过 AT&T LTE 上传时,应用程序上传速度非常快,但随后会超时等待服务器响应。使用 Telstra LTE 或 Wi-Fi 上传时不会出现问题。
在 Web 服务器上执行数据包捕获显示,在应用程序达到 100% 后 60 秒,数据包仍有到达服务器。
(我通过显示应用程序实时发送的字节数与使用 iptables 统计到达 Web 服务器的字节数进一步验证了这一点。)
由于上传是通过 HTTPS 进行的,我知道它不是一个透明代理。
我怀疑 AT&T 在他们的一台路由器上启用了“大型接收卸载”,并且 LRO 正在缓冲 HTTP POST(通过 HTTPS)的底层 TCP 连接。
我的服务器位于澳大利亚(~200ms)。
我有以下想法,但我也想接触社区。1) 将超时时间增加到某些愚蠢的程度。2) 将应用程序层的上传分块为 1mb 或 5mb 块 3) 尝试使用 VMWare 中的 Linux 路由器重现环境,并在 VMXnet3 适配器上启用 LRO。
您能建议我可以尝试其他方法吗?