1

我刚刚遇到了一些问题,需要指导来解决它。我有这个测试脚本:

<?php
header('Content-type: text/plain');
$start = microtime(true);
echo 'Start time: '.date('H:i:s')."\n";
sleep(5);
echo 'End time: '.date('H:i:s')."\n";
echo 'Ellapsed time: '.(microtime(true)-$start)."\n";
?>

如果我在 Firefox 或 Chrome 中同时在 2 个选项卡中运行它,我会看到第二个选项卡中的脚本仅在第一个脚本完成其工作后才有效。在 IE9 中它是同时工作的,而不是一个接一个。问题出在哪里?为什么脚本不能在 FF 和 Chrome 中同时工作?

铬的结果

1 个标签:

Start time: 22:34:03
End time: 22:34:08
Ellapsed time: 4.9997730255127

2 选项卡:

Start time: 22:34:08
End time: 22:34:13
Ellapsed time: 5.0004279613495
4

1 回答 1

0

大多数服务器对单个用户可以拥有的连接数都有限制。您的页面可能会一个接一个地加载的另一个原因可能是会话变量。如果您正在使用的文件打开会话,则必须完全加载第一页,并且必须在第二页开始加载之前关闭会话。

以上两种情况在不同的浏览器中都不会做出不同的响应,这让我相信问题是特定于浏览器的。如果您尝试在两个选项卡上加载同一页面,我最好的猜测是您使用的 chrome 和 firefox 版本按顺序发送请求,并在触发第二个之前等待。

想到的最后一件事是,对于 AJAX 调用,如果您不异步执行它们,它们将按顺序触发,但要等待第一个完成。一个例子是谷歌分析。他们的跟踪代码现在是异步的,因此页面加载时间不会受到影响。您可以在此处阅读有关异步 JavaScript的更多信息

通常最好结合 AJAX 请求来减少网络拥塞和服务器负载。如果可能的话,我建议您考虑将它们结合起来,因为一旦您的应用程序或网站变得更受欢迎,10000 个请求总是比 20000 个更好......

于 2013-04-23T22:14:07.843 回答