Javascript 当Apache KeepAlive处于启用状态时,浏览器会删除POST

Javascript 当Apache KeepAlive处于启用状态时,浏览器会删除POST,javascript,apache,keep-alive,Javascript,Apache,Keep Alive,多年来,出于性能原因,我一直启用apache keep alive。它允许重复使用连接,并使我的页面加载速度略微加快。然而,在过去几个月里,一个奇怪的问题开始发生 有时,从用户浏览器到我的应用程序的连接会被断开,从而导致数据无法保存并出现错误。我已经做了大量的测试,并且认为我已经缩小了问题的范围。我使用哪种浏览器并不重要。数据库和服务器端脚本不是一个因素。这只发生在帖子上,而不是有趣的GET上。如果我活着,它就会消失 以下是我认为正在发生的事情。我把时间设置为1秒。1秒后,服务器终止连接,但客户

多年来,出于性能原因,我一直启用apache keep alive。它允许重复使用连接,并使我的页面加载速度略微加快。然而,在过去几个月里,一个奇怪的问题开始发生

有时,从用户浏览器到我的应用程序的连接会被断开,从而导致数据无法保存并出现错误。我已经做了大量的测试,并且认为我已经缩小了问题的范围。我使用哪种浏览器并不重要。数据库和服务器端脚本不是一个因素。这只发生在帖子上,而不是有趣的GET上。如果我活着,它就会消失

以下是我认为正在发生的事情。我把时间设置为1秒。1秒后,服务器终止连接,但客户端需要很短的时间(比如100ms)才能意识到连接已终止。因此,在1秒到1.1秒之间,如果客户机尝试重用连接并发布一些数据,那么该发布将失败。我制作了一个脚本,以1秒的间隔发布一些数据,我可以看到客户端的其他连接都被断开了。如果我将脚本更改为以0.9秒或1.1秒的间隔发布,则不会断开连接,因为可以避免特定的计时窗口。如果我将KeepAliveTimeout更改为2秒或其他数字,那么它只会弹出计时窗口,并不能真正解决问题

我的帖子来自javascript(jquery.ajax),但我想如果你把握好时机的话,也可以从常规的表单帖子中获得

在Safari和IE中,连接会立即断开并失败。在Firefox和Chrome浏览器中,浏览器会暂停数十秒,然后在新连接上重新发送请求,成功


如果这仅仅是keepalive的一个基本问题,那么我很困惑为什么它工作了很多年,只是在最近几个月才开始这样做。暂时,我禁用了keep alive,但如果可能的话,我想找到一种使用它的方法。我希望这里有人知道一个解决方案。

我们今天遇到了完全相同的问题。你找到解决办法了吗?找到了。我们关闭了KeepAlive:)我们找不到解决方案。这似乎是KeepAlive和POST的一个基本问题。我们考虑的一件事是让所有帖子都在KeepAlive关闭的情况下发送到一台服务器,其他所有内容都在KeepAlive打开的情况下发送到服务器。这对于一个小优化(如果有的话)来说太复杂了。也遇到了这个问题。这是Safari的一个众所周知的问题,默认情况下,NGINX为Safari系列浏览器禁用了keepalive(不确定这是否仍然成立):但对我来说,在其他Web服务器上发生这种情况是新的。可怕的是,这似乎是一个7年前开始出现的问题,但我看到它发生在一个失败的现代设置上(截至2016年6月):NGINX 1.8.0,El Capitan上的Safari 9.1。