2017-02-11 8 views
0

XMLHTTPRequestsを使用してデータベースからデータを取得する方法については、JavaScriptで読んでいます。x秒ごとにリクエストせずにajaxを使用してデータベースからデータを取得

しかし、私はこれらの「チュートリアル」のひとつひとつの1がデータごとX秒を取得するために、間隔を使用しており、これは非常に課税(および不要)ことになるように、それが思われることに気づきましたサーバー;特にこれらのクエリが何も返さないことを考えると、

だから、どのようなFacebookのツイッターなどのウェブサイトはそれを行うのですか?

このような何か(私は簡単にするためjQueryのを使用している)ので

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

...トップ上のビットです。特にあなたがその速度でリクエストを行うことができないかなり小さいサーバー(またはデータキャップ)を持っているならば。

乾杯。

+0

巨大で強力なサーバときれいなコード –

+3

@DirtyDeveloper正確には役立ちません。 –

+0

必要なときにデータを要求するのではなく、常にサーバーのデータをポーリングする必要があるのはなぜですか?例えば。ユーザーアクションに基づいています。常にポーリングのための樹脂がある場合、socket.ioのようなプッシュ技術を使って見たいと思うかもしれません。 – ryandrewjohnson

答えて

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"; 
+0

これは実質的に同じではありませんか? –

+0

https://www.html5rocks.com/jp/tutorials/eventsource/basics/をご覧ください。 ['HTTP/2'](https://http2.github.io/)を利用することもできます。 – guest271314

関連する問題