jquery - AJAX - 仅当有新数据时才获取

标签 jquery ajax

所以现在,我每秒都会执行一次 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);

最佳答案

StackOverflow 网站和 AngularJS 中出现的概念称为 WebSocket。传统的 HTTP AJAX 长轮询可以与 WebSocket 进行比较:


(来源:jensimmons.com)

WebSockets 与服务器有持久连接。这意味着,服务器总是知道数据何时发生变化,并将数据推送到客户端,而不是传统的客户端从服务器拉取(请求)数据的方式。

如您所见,WebSocket 是相同的,但是逐帧进行。他们拿大块的。仅将数据 block 发送到客户端,从而节省大量时间和带宽:


(来源:rabbitmq.com)

关于jquery - AJAX - 仅当有新数据时才获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33967455/

相关文章:

javascript - Soundcloud 自定义播放器暂停播放器

javascript - 如何让这个区域显示: none?

javascript - 如何获取jquery中选中的复选框对应的span值

javascript - 使用动态内容调整父元素的大小

jquery - 使图像适合液体父级

javascript - 如何同步 slider 中两个列表的状态?

jquery - ASP.NET jQuery Ajax 表,输入完成后保存

node.js - 当nodejs服务器没有反应时如何处理?

javascript - jQuery AJAX CORS 请求在发送 header 时失败

javascript - Ajax.BeginForm OnSuccess、onBegin、OnFailure 未触发