Получайте счет каждую X секунду, загружая более 1 миллиарда запросов XHR - PullRequest
0 голосов
/ 25 августа 2018

Я использую setInterval, чтобы получать мой счетчик уведомлений каждые 5 second, я думаю, что это плохая идея для получения этих результатов.потому что, если вы останетесь на моем сайте какое-то время, вы получите миллиардную загрузку XHR.И если вы используете Facebook, вы не получите много XHR.Вот мой сайт захвата XHR: enter image description here

Мой код в файле: notification.php:

function getnotificount(){
$.post('getnotificount.php', function(data) {
        $('#notifi_count').html(data); 
    });
}

setInterval(function(){
     getnotificount();
}, 5000);

Ответы [ 3 ]

0 голосов
/ 25 августа 2018

Ваш код в порядке. Это не «загрузка более 1 миллиарда запросов XHR», это запуск (и завершение - как мы можем видеть) запрос каждые X секунд, и в этом нет ничего плохого.

Однако это не лучший способ реализовать систему push-уведомлений. Это будет websockets , который позволит вашему клиенту «прослушивать» сообщения с вашего сервера. Для этого есть фреймворки, самой популярной (и той, которую я рекомендую) является socket.io .

Ваше третье и наиболее продвинутое / современное решение будет включать систему уведомлений для сервисных работников , но я уверен, что это слишком сложно и не подходит для вас, так как вы даже не можете понять вашей проблемы достаточно, чтобы описать ее.

0 голосов
/ 25 августа 2018

Это совсем не плохая идея. Это называется опросом и используется во многих местах как средство регулярного получения данных с сервера. Однако это не лучшее и не самое современное решение для этого. Фактически, если ваш сервер поддерживает WebSockets , то вы должны их использовать. Вам не нужно использовать NodeJS для использования WebSockets, поскольку WebSocket - это протокол создания дуплексного канала связи между вашим сервером и клиентом. Вы должны прочитать о WebSockets. Кроме того, вы можете использовать push-уведомления, которые, на мой взгляд, уступают WebSockets. И хакерский способ - использовать кадр навсегда.

0 голосов
/ 25 августа 2018

То, что вы делаете, это опрос, который регулярно делает новый запрос к серверу.Для http-запроса открывается TCP-соединение, происходит обмен запросом / ответом и TCP-соединение закрывается.Это то, что происходит каждые 5 секунд в вашем случае.

Если вы хотите более легкое решение, взгляните на такие веб-розетки, как socket.io .Только одно TCP соединение открывается и поддерживается между передней и задней панелями.Эта двунаправленная связь позволяет задней стороне уведомлять фронт, когда что-то происходит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...