使用ajax从数据库检索数据而不请求每x秒

时间:2017-02-11 04:15:54

标签: javascript xmlhttprequest

我一直在阅读如何使用XMLHTTPRequests通过 JavaScript 从数据库中获取数据。

但是,我注意到这些"教程" 中的每一个都使用间隔来检索每个 x 的数据>秒,似乎这会对服务器造成极大的负担(以及不必要的);特别是考虑到有时这些查询根本不会返回任何内容。

那么, Facebook Twitter 等网站如何做到这一点?

因为这样的事情(我为了简单而使用 jQuery ):

setInterval(function(){ // retrieve data every 5 seconds
    $.ajax({
        url: "datagrab.php",
        success: function(data){
            $("body").append(data);
        }
    });
}, 5000);

...似乎有点过头了;特别是如果你有一个相当小的服务器(或数据上限)无法以该速率发出请求。

干杯。

1 个答案:

答案 0 :(得分:0)

您可以使用EventSource不断将数据流式传输到浏览器。

const source = new EventSource("data.php");
// note, you can also set custom event handlers for named events
source.addEventListener("message", function(e) {
  // do stuff with `e.data`
});
// close event stream
// source.close();

 <?php 
 header("Content-Type: text/event-stream\n\n"); 
 header("Cache-Control: no-cache"); 
 // get, do stuf with `$data1`, `$data2`
 echo "data: $data1\n";
 echo "data: $data2\n\n";