我有一个非常简单的长轮询 ajax 调用,如下所示:
(function poll(){
$.ajax({ url: "myserver", success: function(data){
//do my stuff here
}, dataType: "json", complete: poll, timeout: 30000 });
})();
我今天下午刚拿起这个例子,它似乎工作得很好。我正在使用它在我的页面上构建一些 html,据我所知,它几乎是即时的。我有点担心这会让我的服务器上的工作线程保持打开状态,并且如果我在服务器上的负载太大,它将完全停止。有人可以阐明这个理论吗?在后端,我有一个 webapi 服务(.net mvc 4),它调用数据库、构建对象,然后将对象传递回去。在我看来,为了使其正常工作,服务器必须不断调用数据库......这不太好,对吧???
我的下一个问题是客户端确定是否需要更新页面上的 html 的最佳方法是什么?目前,我正在使用 JSON.stringify() 将我的对象转换为字符串,并将返回的字符串与旧字符串进行比较,如果有增量,它会重写页面上的 html。现在还没有一个完整的对象中有很多下降,但它可能会变得非常大,我认为在客户端进行字符串比较可能会占用大量资源......特别是如果它几乎不断地进行。
对我来说,最重要的是:我不确定轮询的工作时间。我只是用谷歌搜索并找到了上面的示例代码并实现了它,从表面上看,它很棒。我只是担心它会陷入困境下来(在服务器上),我将旧结果与新结果进行比较的方式将陷入困境(在客户端)。
非常感谢您提供的任何和所有信息。
TIA。