我有一个内部网站点,用户可以在chrome中的多个选项卡中导航。其中一些会在固定的时间间隔内同时进行多次重度ajax调用以加载大量数据。
我使用页面可见性api来确保如果在其间隔触发时没有选择选项卡,它只会重置间隔;否则,它会刷新数据。
我最近添加了一些代码来在页面失去可见性时中止ajax调用,如果它正在刷新的话。
我发现即使我中止ajax调用,也会有一段时间从该客户端向服务器发出后续请求并进行旋转。就好像在abort()上没有重置每服务器的最大连接数。 (编辑:不是服务器仍在处理,但浏览器似乎没有意识到它可以从队列中提取请求并处理它。)
之前有人遇到此问题并进行修复吗?
答案 0 :(得分:1)
不幸的是,中止ajax请求客户端并不会阻止服务器处理请求。实际上,服务器甚至都不知道客户端已经中止了请求。
某些服务器端框架允许您检查客户端是否仍然连接,但这最多是不可靠的。
当您中止第一个主要通知服务器杀死与您正在中止的会话ID相关联的正在运行的进程时,您可以通过向服务器发起辅助ajax请求来解决此问题。这可能会有点棘手,特别是如果您需要杀死负责更新数据的进程 - 您需要确保维护数据完整性,回滚所做的任何更改等。