Проблема с накопление запросов и их последующей массовой отправкой на сервер
Доброго времени суток!
На сайте стоит setInterval 30сек. на отправку запроса на сервер (/check/user), что бы получить данные о пользователе и отправить накопленную статистику.
По логам на сервере видно, что иногда от именно от одного IP приходит подряд 100-300 запросов на адрес проверки (/check/user)... в секунду по 20 штук. проблема возникает именно с этим запросом, то есть совсем не похоже на dos.
Такое ощущение, что при определенных условиях, запросы как бы накапливаются, и потом все вместе, дружной группой летят на сервер.
Что это за поведение? И как бы его предотвратить?
Спасибо за вниманием.
setInterval(() => {
$.post('/user/check'), function (user) {
API.user.setToken(user);
})
}, 60000)
Ответы (1 шт):
Замените setInterval() на setTimeout(). Это решит вашу проблему.
Можно отслеживать момент переключения вкладок событиями:
window.addEventListener ( "blur", ()={ /* ушли с вкладки */ } )
window.addEventListener ( "focus", ()={ /* открыли вкладку */ } )
window.addEventListener ( "unload", ()={ /* закрыли вкладку */ } )
