在FireFox中发送到服务器的请求数

时间:2010-11-29 07:24:17

标签: javascript html

我在同一页面域的IFrame中有6个表单,点击按钮保存&关闭表单应该提交,然后页面应该关闭,但我注意到前5个表单已提交,但最后一个表单被延迟了一段时间,并且页面在完成保存之前关闭。这只发生在FireFox,我测试它通过IE和Chrome运行良好。

以下是一些代码:

<div id="div_1">
<iframe id='iframe_1'  name='iframe_1' width="100%" frameBorder='0' 
    src='/aaa.jsp'></iframe>
</div>

<div id="div_2">
<iframe id='iframe_2'  name='iframe_2' width="100%" frameBorder='0' 
    src='/bbb.jsp'></iframe>
</div>

 !-- ... --


<div id="div_6">
    <iframe id='iframe_6'  name='iframe_6' width="100%" frameBorder='0' 
        src='/hhh.jsp'></iframe>
</div>

save&amp;关闭按钮:

<input type="button" value="Save & Close" 
       onclick="for(var i = 0; i < frames.length; i++) { frames[i]._Submit('Update');}time_to_close();" />

<script>
function time_to_close()
   {

   setTimeout(function(){
        window.close();
    }, 5000);
   }

</script>

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

所有浏览器都对同一服务器的并发连接数实施限制。 (有些服务器也可以这样做。)实际数量取决于浏览器供应商和HTTP版本,但通常介于2到8之间。几年前的情况总结了(可能是仍然相当准确)on this page;引用相关的一点:

Browser         HTTP/1.1    HTTP/1.0
IE 6,7            2            4
IE 8              6            6
Firefox 2         2            8
Firefox 3         6            6
Safari 3,4        4            4
Chrome 1,2        6            ?
Chrome 3          4            4
Opera 9.63        4            4
Opera 10.00alpha  4            4

您的time_to_close函数假定所有提交的内容不会超过五秒钟。即使没有并发连接限制,该假设也是不正确的。用户的连接可能暂时已经饱和,可能存在最终被解决的临时路由问题,服务器可能过载以及排队连接等等等。您最好提交返回的内容检查帧(一个标志,无论如何),然后设置一个定时检查等待所有标志设置(当然,可能给用户提供等待更长时间的选项)。

但是,更好的是,如果您控制服务器端,您可以将所有数据收集到一个提交中,这几乎肯定会显着提高感知性能(设置的开销) HTTP连接发送表单通常是表单提交的最长部分,禁止服务器慢慢处理表单本身。