Jquery abort()没有'似乎没有完全释放

Jquery abort() doesn't seem to release fully

本文关键字:释放 abort 没有 Jquery      更新时间:2023-09-26

我有一个intranet站点,用户可以在chrome中的多个选项卡中导航。其中一些会同时进行多个繁重的ajax调用,以固定的间隔加载大量数据。

我使用页面可见性api来确保如果在间隔触发时没有选择选项卡,它只会重置间隔;否则,它会刷新数据。

我最近添加了一些代码,当页面失去可见性时,如果页面正在刷新,可以中止ajax调用。

我发现,即使我中止了ajax调用,从这个客户端向服务器发出的后续请求也会有一段时间。就好像每个服务器的最大连接数没有在abort()上重置一样。(编辑:并不是说服务器仍在处理,而是浏览器似乎没有意识到它可以从队列中提取请求并进行处理。)

以前有人遇到过这个问题并解决了吗?

不幸的是,终止客户端的ajax请求并不能阻止服务器处理该请求。事实上,服务器甚至根本不知道客户端已经中止了请求。

一些服务器端框架允许您检查客户端是否仍然连接,但这充其量是不可靠的。

当您中止第一个ajax请求时,您可以通过向服务器发起第二个ajax请求来绕过这一问题,该请求基本上会通知服务器终止与您中止的会话ID相关的任何正在运行的进程。不过,这可能会变得有点棘手,尤其是如果您需要终止负责更新数据的进程,则需要确保您保持数据完整性,回滚所做的任何更改等。