5

我在 Google-Chrome 中遇到了一个奇怪的问题,即当使用长时间运行的脚本打开一个选项卡时,另一个选项卡处于“待处理”状态,直到第一个选项卡完成。我创建了一个小小提琴来重现此问题,并且还包括在 Safari 上运行的结果。当这个小提琴添加 ?q=a 和 ?q=b 时,它解决了这个问题。但是,当我调用两个不同的智能 url(http://domain.com/a/v1 http://domain.com/a/v2甚至http://dev.domain.com/a/v6or http://dev.domain.com/b/v8)时,它们也会导致这种“挂起”行为。

小提琴:

<?php
echo time();
echo '<br>Now:       '. date('h:m:s');

sleep(10);

echo time();
echo '<br>Now:       '. date('h:m:s');

?>

在谷歌浏览器中打开两个并发标签时,输出:1:

Now: 11:01:12
1357117332
Now: 11:01:22
1357117342

2:

Now: 11:01:22
1357117342
Now: 11:01:32
1357117352

如您所见,尽管我几乎同时启动了它们,但第二个等待第一个完成后才开始。

在 Safari 上运行时也是如此: 1:

Now: 10:01:36
1357116336
Now: 10:01:46
1357116346

2:

Now: 10:01:37
1357116337
Now: 10:01:47
1357116347

如您所见,在 Chrome 中,第二个脚本仅在第一个脚本完成后才开始,而在 Safari 中,它们一起工作。什么会导致这种奇怪的行为?我应该寻找哪些信息来帮助调试原因?

更新:添加 ?q=a 和 ?q=b 解决此问题的答案是正确的。现在我试图弄清楚为什么我首先在​​这个问题上运行,尽管我调用了两个不同的 url。我正在使用智能网址,网址看起来甚至domain.com/dir/var1都导致相同的效果。什么会导致这种情况?domain.com/dir/var2dev.domain.com/var6

4

1 回答 1

6

这是 Chrome 的行为。

如果您对完全相同的 url 执行 GET 请求 - 它会等到第一个结束。只需通过附加一些不同的参数来更改 url,例如?q=a并查看它们将同时执行。

于 2013-01-02T09:14:28.167 回答