现在,我每秒都在做一个GET请求,检查数据库中是否有新信息。
这使用了用户方面的大量资源。我有一个显示当前数据的文本框。如果数据库中有新数据,则将替换为新数据。现在,我每秒都要做一次GET请求来实现这一目标。
有更好的方法吗?
例如:我查看了检查窗口并观察了堆栈溢出。它没有做任何GET请求。但是,一旦有新评论,它就会根据新评论进行更新。我想要类似的东西。
我已经研究过Stackoverflow,并且没有找到对我正在制作的应用程序有帮助的那个。
我目前的代码:
function timers() {
tmrAjax = setInterval(function () {
$.get('<?php echo base_url('home/get') ?>', function (html) {
$("[name=text]").attr('id', 'text');
$("#text").val(html);
// $("#text").removeAttr("disabled");
});
}, 1000); //a call every second is ridiculous!
}
timers();
$(window).blur(function () {
clearInterval(tmrAjax);
$("#text").removeAttr("id");
// $("#text").attr("disabled", "disabled");
}).focus(timers);
答案 0 :(得分:3)
StackOverflow网站和AngularJS中发生的概念称为WebSockets。传统的HTTP AJAX Long Polling可以通过这种方式与WebSockets进行比较:
http://apress.jensimmons.com/v5/pro-html5-programming/images/ch7/fig7-5.png
WebSockets与服务器有持久的连接。这意味着,服务器始终知道数据何时发生变化,并将数据推送到客户端,而不是客户端从服务器提取(请求)数据,这是传统方式。
正如您所看到的,WebSockets是相同的,但逐帧进行。他们拿块。只有大块数据被发送到客户端,从而节省了大量的时间和带宽: