当前位置: 首页 > 面试题库 >

不同浏览器的超时行为?

冯枫
2023-03-14
问题内容

我正在写一个基于AJAX / COMET的在线聊天室。我的设计是:

请求

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

-----------------等待------------------------->发送转储数据

------发生了什么事,得到回应。

另一个要求.....

如您所见,服务器保留请求并等待发生了一些事情,如果发生了某些事件,则只需推送数据并完成请求即可。然后客户端将发出另一个请求。请求中存在滴答声,因此,如果两个请求之间发生了事件,则服务器会知道客户端有未决事件。

在浏览器超时之前,服务器还会发送一些空闲数据以防止客户端超时。

现在,问题来了:不同浏览器的超时行为是什么?我知道浏览器发送请求并等待数据,如果等待时间太长,则会超时。但是,不同浏览器的超时行为是什么?是否有任何头文件可以控制浏览器的超时行为?通过了解浏览器的超时行为,以便我可以决定如何处理它们。在哪里可以找到这些数据?


问题答案:

实际上,由于客户端可能正在处理代理,因此不同浏览器的超时值的显式值并不像您想的那样重要。

相反,我想问你为什么要问-您将不得不处理超时,并且每次浏览器的流传输都不会阻止它。因此,最好在连接断开时简单地从客户端重新查询服务器-
这是很多人建议您进行长轮询的原因之一。无论选择流式解决方案还是长时间轮询,都必须允许连接重置。

对于简单的隐藏iframe客户端设置,这并不难
-取决于您使用的客户端框架,XHR请求也同样容易。

大多数现代浏览器的超时在IE中似乎很大(60分钟?哇),而在FF中则更短(about:config表示300秒-eek),但是正如我所说,这对您使用代理服务器无济于事,超时时间可能短至2分钟或更短,具体取决于代理管理员的配置方式。

因此,总而言之-
发生超时。你不能阻止他们。对您的客户端进行编码,使其在发生时重新连接(有一定的限制,以防止服务器停机),而不必担心它。除了更健壮之外,它还可能使您的代码更具性能,因为您不会定期将无用的数据泵送到每个客户端。



 类似资料:
  • 问题内容: 浏览器是否内置了超时功能,如果可以,它们是什么? 我有一个页面,该页面在最多运行5分钟的进程上执行AJAX调用。有人说浏览器在2分钟后超时,但不知道这有什么道理。 问题答案: 它取决于浏览器。“默认情况下,InternetExplorer的KeepAliveTimeout值为一分钟,其他限制因素(ServerInfoTimeout)为两分钟。这两种设置都会导致InternetExplo

  • 问题内容: 当服务器由于超时而没有响应时,我偶尔遇到重试POST请求的情况。所有现代浏览器都对幂等请求(GET,HEAD等)具有重试逻辑,但是我无法推断出为什么它对POST请求会发生。 我正在使用具有3条路由和chrome浏览器的简单node.js服务器测试这种情况。 默认情况下,node.js http服务器在2分钟后使请求超时。 retry.js 运行 1个 2 从开发控制台,使用jquery

  • 问题内容: 我一直在网上搜索,试图找到一个直接的答案。有谁知道浏览器请求ajax的默认超时时间?还可以通过版本进行更改吗? 问题答案: 我认为浏览器的AJAX没有超时,只有同步或异步请求。同步-首先冻结JavaScript执行,直到请求返回;异步- 不冻结JavaScript执行,仅将请求从执行流中移出;如果您有回调函数,它将与正在运行的脚本并行执行该函数(类似于线程)

  • 我有相同的图像和相同大小的画布,但是输出是不同的。我想要同样的输出,该怎么做呢?

  • 问题内容: 有没有办法为特定的浏览器加载不同的CSS文件? 像(伪代码差): 问题答案: 您想要的理想解决方案不存在: 不幸的是,如果您尝试在HTML本身上进行操作,则不存在跨浏览器解决方案。但是,它将适用于大多数版本的IE。像这样: 所以最好的解决方案是: 这样的Javascript解决方案怎么样:浏览器检测。阅读有关此类的内容以更好地弄清该文件的基本作用,就是这样的概念: 显然,它不仅可以检测

  • 问题内容: 在IE7,IE8和Firefox上设置属性并返回不同的值: IE 8: IE 7: 火狐: 为什么存在这种差异? 在不使用jQuery的情况下,是否存在跨不同浏览器(IE8,IE7,Firefox)一致的等效属性? 问题答案: 这与浏览器的盒子模型有关。使用jQuery或其他JavaScript抽象库之类的东西来规范DOM模型。