在服务器回答请求之前,浏览器在显示错误之前等待多长时间?这次可以无限制吗?
我正在寻找某种文档来指定每个浏览器(IE6/IE7/FF2/FF3等)在请求放弃和超时前等待多长时间.
我没有运气试图得到这个.
有什么指针吗?
在普通的javascript中执行Ajax请求时,似乎可以设置超时值.请参阅如何在浏览器中检测AJAX(XmlHttpRequest)调用的超时?
当我使用jQuery的ajax实现和其他类似的框架时,它也是可能的.请参阅设置ajax超时(jQuery)
浏览器似乎对其默认超时有相当模糊的规范.请参阅浏览器超时
因此,有人可能会"嘿,我要为我的ajax请求设置超时,以便所有用户都具有相同的超时".
但接下来的问题是:它会在所有情况下实际覆盖浏览器的超时吗?
当我说"所有"情况时,我的意思是,例如,如果浏览器超时值小于您的ajax请求超时值.
我怀疑它没有.
我还怀疑最好总是有一个超时错误处理程序,以确保无论发生什么,您都可以显示相关消息,这将为您的支持团队节省数小时的工作,并为您的公司节省资金.请参阅确定$ .ajax错误是否超时
提前致谢
在JavaScript类中,XMLHttpRequest连接到服务器.服务器正在缓慢地发送数据.这在Chromium中运行良好,但Firefox在随机时间后(约4s到~70s之间)关闭连接.
为什么Firefox会关闭连接?以及如何避免这种情况?
简化的JS代码:
var options = {};
options['header']=
{ 'Cache-Control':'no-cache, max-age=0',
'Content-type': 'application/octet-stream',
'Content-Disposition': 'inline'
};
// Get request information
this.http = new XMLHttpRequest();
this.http.onreadystatechange = _streamingResponse.bind(this);
this.http.open('post', url, true);
for (var i in options['header'])
{
this.http.setRequestHeader(i, options['header'][i]);
}
this.http.send('');
Run Code Online (Sandbox Code Playgroud)
对于PHP部分,类似于:
sleep(200); //wait long time, so firefox close the socket.
Run Code Online (Sandbox Code Playgroud)
如果服务器每隔几秒钟(<5s)发送一次内容,则连接会"永远"保持活动状态.但是如果没有发送数据,Firefox会关闭连接.
连接关闭: - readyState = 4 - status = 0
服务器似乎是正确的,因为在Chromium中它可以正常工作.
完整的测试代码:
的test.html
<html>
<header>
</header>
<body>
</body>
<script type="application/javascript">
function log( msg )
{
document.body.appendChild(document.createElement('div').appendChild(document.createTextNode(msg)));
document.body.appendChild(document.createElement('br'));
}
function request(url) …Run Code Online (Sandbox Code Playgroud) 我遇到一种情况,ASP.NET需要很长时间才能生成网页回复(超过2小时).它由于代码隐藏运行一段时间(非常长,慢循环).
浏览器(IE和Firefox)停止等待回复(大约一小时后),并且通用无法显示网页错误(类似于您尝试导航到不存在的服务器时所看到的).
同时asp.net应用程序继续(我可以在调试器中看到它)并最终完成.
为什么会这样?web.config中是否有任何设置来影响这个?我希望有一个超时设置我错过了造成这种情况.
也许在IE或Firefox中设置?但我认为他们等待服务器保持连接活着.
即使我在VS的本地计算机上以调试模式(使用编译debug ="true")启动应用程序(因此它不在IIS上运行,但在ASP.NET Dev Server上运行),我也遇到了这种情况.
我知道生成页面需要很长时间才是很糟糕,但在这个阶段并不重要.加快它将需要大量的额外工作,延迟并不重要.这在内部使用.
我意识到我可以重新设计这个问题,将逻辑运行到后台进程,并在通过AJAX完成时收到通知,或将其拉到桌面应用程序或服务或其他任何东西.这些方面的某些东西最终会完成,但这不是我现在要问的问题.