我正在使用Angulars $http.post
向服务器发出轮询请求。但是,如果服务器关闭,客户端浏览器(谷歌浏览器)变得非常慢,在Firefox上运行正常。我无法在我的开发机器上重现这一点,可能是因为它更强大,但我也注意到两台机器之间存在差异。客户浏览器报告ERR_CONNECTION_RESET
,而我的报告ERR_CONNECTION_REFUSED
。我不确定这是否有任何区别。
代码本身没有太大作用:
var update = function () {
$http.post(url)
.success(onSuccess)
.error(onError);
};
var onError = function () {
$rootScope.errors = true;
$timeout(update, pollInterval * 2);
};
var onSuccess = function (data) {
_data = data;
$rootScope.$broadcast('dataUpdated');
$rootScope.errors = false;
$timeout(update, pollInterval);
};
我找不到任何理由为什么这会在断开连接时放慢Chrome的速度。返回5xx http code
工作正常,因此它也不应与onError
函数相关。谷歌浏览器版本为33.0.1750。
答案 0 :(得分:1)
您应该看到生产服务器上的设置...其他原因是客户端有防病毒软件或反间谍软件。
此外,你应该管理你的职位申请超时, 这里有一个例子:
var update = function () {
$http.post(url,null,{ timeout:3000 })
.success(onSuccess)
.error(onError);
};
注意:此设置超时30秒。
此处有更多参数Arguments for $http object
我希望这有帮助!
答案 1 :(得分:0)
看起来您的代码等待来自服务器的响应,然后在成功或失败的情况下执行操作。所以,这并没有真正指出性能问题,它只是说直到你从服务器收到回复才会发生事情 - 这需要花费很多时间,因为服务器关闭并且连接重置(等待之后)为了回应而不是立即拒绝连接。因此存在差异。
我建议您在服务器可能关闭的情况下使用超时时使用$ http。 Here's the doc