[英]How to make a script that polls every second with POST or GET without lag?
我想为我的控制管理中心系统创建一个通知中心。 如果我使用这样的东西:
$(function(){
setInterval(function(){
$.post("url", { data: 'value' }, function(result){
// check for updates
});
}, 1000);
});
该页面一直处于滞后状态。 不可能在“后台”做类似的事情吗? 没有加载或滞后问题? 如果可能的话,那就太好了! 我尝试了几件事,但效果不大。
您应该将间隔时间增加到比10次/秒更合理的时间。 大概每秒一次,值1000
您所指的是长轮询。 不知道您的代码对页面做了什么,很难说出它导致页面滞后的原因。 即便如此,每秒轮询仍会在您扩展服务器时给服务器带来很大的负担。
您将需要增加时间间隔。 每3-10秒一次的操作不会对用户体验产生不利影响。 除非您要进行共享文档编辑或绘图应用程序,否则人们不会注意到。 听起来您只是在推送通知。
如果您需要Web“实时”通知,请使用WebSockets。 您仍然需要为不支持WebSockets的浏览器实施长轮询: “浏览器兼容性”下的详细信息 。
HTML5 Rocks很好地介绍了WebSockets 。
如果您希望在两次调用之间有一个确定的间隔,请尝试使用setTimeout而不是setInterval,并调用具有邮编/获取代码的相同函数。 就像是
function myTimeout() {
//your code for post/get
setTimeout(myTimeout, 1000);
}
这是为了确保在下一次调用“ myTimeout”之前,“ Previous Interval”已完成,而后者又发出了帖子。 我相信,使用setInterval不能保证,在您的情况下,setInterval会调用一个函数,使函数每1000毫秒发送一次,无论如何。 在延迟情况下,呼叫可能无法以所需的间隔(1000毫秒)间隔开。 但是,这仍然不能保证两次呼叫之间的固定间隔(如果呼叫/响应花费的时间比指定间隔更长)。 请在https://developer.mozilla.org/zh-CN/docs/Web/API/window.setInterval标题为“危险使用”下阅读更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.