Chrome处理智能网址并导致并发请求彼此挂起

Noa*_*oam 5 browser lamp google-chrome client-server

我在Google-Chrome中遇到一个奇怪的问题,当一个标签打开时,一个长时间运行的脚本,一个不同的标签处于"挂起"状态,直到第一个标签完成.我创建了一个小小的小提琴来重现这个问题,我也在这里包括在Safari上运行的结果.当添加这个小提琴时,?q = a和?q = b它解决了这个问题.但是,当我打电话给两个不同的智能网址(http://domain.com/a/v1 http://domain.com/a/v2甚至http://dev.domain.com/a/v6或者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');

?>
Run Code Online (Sandbox Code Playgroud)

在Google Chrome中打开两个并发标签时,输出:1:

Now: 11:01:12
1357117332
Now: 11:01:22
1357117342
Run Code Online (Sandbox Code Playgroud)

2:

Now: 11:01:22
1357117342
Now: 11:01:32
1357117352
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,虽然我几乎在同一时间开始它们,但是第二个在它开始之前等待第一个完成它们.

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

Now: 10:01:36
1357116336
Now: 10:01:46
1357116346
Run Code Online (Sandbox Code Playgroud)

2:

Now: 10:01:37
1357116337
Now: 10:01:47
1357116347
Run Code Online (Sandbox Code Playgroud)

您可以注意到,在Chrome中,第二个脚本仅在第一个脚本完成后启动,而在Safari中,它们一起工作.是什么导致这种奇怪的行为?我应该寻找哪些信息来帮助调试原因?

更新:添加?q = a和?q = b的答案可以解决这个问题是正确的.现在我想弄清楚为什么我在这个问题上运行,尽管我打电话给两个不同的网址.我使用智能URL,URL格式domain.com/dir/var1domain.com/dir/var2甚至dev.domain.com/var6都会导致同样的效果.是什么导致这个?

zer*_*kms 6

这是Chrome行为.

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