我在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');
?>
在Google Chrome中打开两个并发标签时,输出: 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的答案可以解决这个问题是正确的。现在我想弄清楚为什么我在这个问题上运行,尽管我打电话给两个不同的网址。我正在使用智能网址,网址domain.com/dir/var1
和domain.com/dir/var2
甚至dev.domain.com/var6
都会产生相同的效果。是什么导致这种情况?
答案 0 :(得分:6)
这是Chrome行为。
如果您对完全相同的网址执行GET请求 - 它会等到第一个结束。只需添加一些不同的参数(例如?q=a
)即可更改网址,并看到它们会同时执行。