【问题标题】:Does Firefox synchronize requests for the same page?Firefox 是否会同步同一页面的请求?
【发布时间】:2010-07-19 19:24:47
【问题描述】:

我使用的是 Firefox 3.6.6。

我有一个名为 index.php 的 PHP 脚本,代码如下:

<?php
sleep(20); die(time());
?>

我打开两个浏览器选项卡,将 URL 复制到每个选项卡中,然后在每个选项卡中快速按 Enter。第一个选项卡在 20 多秒内完成。第二个标签在 40 多秒内完成。

我在 IE 中做了同样的实验,两个脚本在一秒钟内完成,大约 20 秒。

这是预期的行为吗?导致我对此进行测试的实际脚本是一个同步过程。我希望任何尝试执行它两次的人都会收到进程已经在进行中的错误,而不是让浏览器坐在那里等到它可以再次执行它。

如果这就是 Firefox 的工作方式,它如何确定一个页面何时是重复的,以及它应该将请求排队而不是同时运行它们?

我可以通过在末尾添加一个垃圾 GET 字符串来欺骗它,例如index.phpindex.php?JUNK=1 都在 20 秒左右完成。

【问题讨论】:

  • IE 的行为似乎被破坏了(或者至少不理想)。当你没有理由认为你必须检索相同的东西时,为什么要检索两次?

标签: php internet-explorer firefox synchronized


【解决方案1】:

这是缓存机制:如果您禁用所有缓存,则不会出现问题。显然,FF 开发人员检查了当请求仍在加载时它可能是可缓存的,因此它等待第一个请求,然后才决定不使用缓存,然后才调度第二个请求(您可以在时间戳中检查您的日志文件)。

您可以尝试使用一些无缓存标头和向客户端发送数据的 flush(),也许它可以确定在接收标头时缓存不是一个选项,尽管我怀疑缓存检查仅在内容已加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    相关资源
    最近更新 更多