2017-02-11 4 views
0

Я читал о том, как использовать XMLHTTPRequests для захвата данных из базы данных через JavaScript.Получение данных из базы данных с использованием ajax без запроса каждые x секунд

Однако, я заметил, что каждый из этих «учебников» использовать интервал для получения данных каждых х секунд, и кажется, что это было бы чрезвычайно налогообложение (и ненужных) на сервер; особенно учитывая, что иногда эти запросы ничего не возвращают.

Итак, как делают такие сайты, как Facebook и Twitter не так ли?

Потому что-то вроде этого (я использую JQuery для простоты):

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

... кажется немного сверху; особенно если у вас достаточно небольшой сервер (или кеш данных), который не может выполнять запросы с такой скоростью.

Cheers.

+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/en/tutorials/eventsource/basics/. Вы также можете использовать ['HTTP/2'] (https://http2.github.io/) – guest271314

 Смежные вопросы

  • Нет связанных вопросов^_^