用户上传一个 Excel 表格,这会触发一个可能需要一些时间的过程:表格被保存(快速)然后处理(需要一段时间并且独立于与客户端的通信)。之后,返回一个视图。
如果用户上传文件并立即关闭浏览器会发生什么。被触发的进程会一直持续到它发现没有人可以返回视图吗?
我想一旦触发该过程,服务器不知道/关心客户端是否仍然处于活动状态,直到下一次服务器与客户端通信,因此服务器将继续工作。但我不确定.. 感谢您对这个新手问题的意见!
用户上传一个 Excel 表格,这会触发一个可能需要一些时间的过程:表格被保存(快速)然后处理(需要一段时间并且独立于与客户端的通信)。之后,返回一个视图。
如果用户上传文件并立即关闭浏览器会发生什么。被触发的进程会一直持续到它发现没有人可以返回视图吗?
我想一旦触发该过程,服务器不知道/关心客户端是否仍然处于活动状态,直到下一次服务器与客户端通信,因此服务器将继续工作。但我不确定.. 感谢您对这个新手问题的意见!
可能要问一个不同的问题,而不是一个答案,但是如果用户厌倦了等待非常慢的响应并开始锤击刷新,例如重新提交,你会怎么做?
一般来说,处理这个问题的一个好方法是分离慢进程来运行异步,然后返回给客户端,然后客户端可以轮询进度。
很容易自己尝试。
但由于 HTTP 是无状态的,因此 Web 服务器无法安全地检测到浏览器已关闭。
但是,如果您真的想检测浏览器是否保持打开状态,您可以在进行实际处理时使用 Web 套接字或长轮询请求。
即使客户端刷新并上传新文件(旧请求仍在运行),该过程仍将继续。小心,它可能是冲突的根源!