Web 界面:iOS 设备上的 upload/connection 超时独立于任何实际服务器超时

Web Interface: upload/connection timeouts on iOS devices are independent of any actual server timeouts

当前项目:

所以我遇到了一个非常奇怪的问题。我建立了一个允许用户上传图像的测试站点。然后,此图像由 TinyPNG 处理,然后直接转储到数据库中(一项业务决策 - 项目的具体要求)。在任何类型的全功能计算平台上,例如 Windows、MacOS 或 Linux,我都可以上传图像并完全进入最终结果,显示我上传的图像列表在该页面的“会话”中(这样用户可以在离开之前看到他们自己上传的内容)。

然而,在 iOS 设备上,此过程“超时”,因为 Safari 向我提供了“超时”响应。但是,即使我从 Safari 上传 10 张图片,所有 10 张图片实际上都已成功上传。所以我知道超时的不是服务器——而是 Safari 或 iOS.

中明确显示的内容

我的研究并没有真正提出任何问题。我已经通过实际前往手机接收不良(3G 服务)的位置并上传一张图像来确认这个问题 - 在 LTE 上 - 让我完成了整个页面生命周期(没有超时)。在 3G 上我仍然可以成功上传图片,但是页面再次“超时”,告诉我这是一个 iOS 问题,而不是传输或服务器问题。事实上,我的直觉反应是“iOS safari 超时”纯粹与时间有关(例如默认为 60 秒超时),与实际服务器超时无关。

我很好奇以前是否有人 运行 遇到过这个问题,以及你们是如何解决这个问题的。我真的在这里拉扯我的头发,因为我看不出有任何方法可以直接影响 Safari 如何决定自己“超时”,而不管任何实际的服务器超时。

我可能已经在 中回答了我自己的问题。

可能发生的事情是 iOS 上传了一张大图片,然后由于大图片从服务器传递到 TinyPNG,它就坐在那里等待……等待……等待图像从服务器传输到 TinyPNG 并再次返回。而且因为是大图,在等待服务器响应整个操作成功时超时。

通过在上传图片和初始传输到 TinyPNG 之间插入一个图像大小调整器,我能够最大限度地减少“通过网络”推送到 TinyPNG 和返回的数据,从而减少客户端的时间需要等待服务器响应。

我现在可以在非常糟糕的连接上上传几张大图片,而且不会超时。然而。迄今为止。我们将会看到(通过更多测试)。