Умножение XHR-запросов приводит к замедлению веб-страницы - PullRequest
0 голосов
/ 06 января 2019

, поэтому у меня проблема с моей страницей PHP. По сути, у меня есть таймер обратного отсчета до 300 с, потому что каждые 5 минут я обновляю данные на странице, не делая полного обновления. Таймер обратного отсчета перезапускается через 300 с после нажатия 0 с. Проблема в том, что со временем слишком много xhr запросов.

После первых пяти минут он выполняет только два запроса. Загрузка веб-страницы и др. Но через пять минут снова (теперь 10 минут) он делает 4 запроса: два раза на веб-страницу и два раза на jquery. Итак, у нас всего 6 запросов. И количество запросов продолжает расти! И это продолжается и каждые 5 минут, достигая более 2000 запросов в час! Таким образом, он просто съедает процессор пользователя и ожидает загрузки всех запросов, прежде чем снова запускать мой таймер обратного отсчета, то есть он не обновляет данные каждые 5 минут, как я хочу.

Вот код:

function progress(timeleft, timetotal, $element) {
var progressBarWidth = timeleft * $element.width() / timetotal;
$element
    .find('div')
    .animate({ width: progressBarWidth }, timeleft == timetotal ? 0 : 1000, "linear")
    .html(timeleft + " secondes restantes");
if(timeleft > 0) {
    setTimeout(function() {
        progress(timeleft - 1, timetotal, $element);
    }, 1000);
}
};

progress(300, 300, $('#progress'));

$(document).ready(function() {
var btn = document.createElement("div");
var refreshId = setInterval(function() {
    $("#body").load('/app/phase/dashboard.php?B=winciel');

    }, 300000); // 300000
$.ajaxSetup({ cache: false });
});

И часть HTML:

<link rel="stylesheet" type="text/css" href="./node_modules/bootstrap- 
4/css/bootstrap.css" />
<script src="./node_modules/jquery/dist/jquery.js"></script>

<div id="body">
<div id="progress" style="width: 1000px;margin: 10px auto;height: 
22px;background-color: #0A5F44;">
    <div id="progressBar" class="bar" style="height: 100%;text-align: 
right;padding: 0 10px;line-height: 22px;width: 0;background-color: 
#CBEA00;"></div>
</div>

Div "body" заканчивается в конце страницы. Там также есть вкладка с обновленными данными, но я не думаю, что она здесь нужна.

Как вы можете видеть на скриншоте, за 25 минут 58 запросов, что является проблемой. Поскольку каждые 5 минут должно выполняться только 2 запроса, он должен делать (25/5) * 2 = 5 * 2 = 10 запросов, а не 58.

Заранее спасибо за попытку помочь мне!

XHR requests

1 Ответ

0 голосов
/ 06 января 2019

Вы используете load для загрузки всей страницы, включая <script>, который запускает интервал.

Каждый раз, когда вы загружаете новые данные, вы запускаете еще один интервал.

Создайте конечную точку HTTP, которая просто предоставляет вам необходимые данные, и загрузите ее без сценариев и других страниц страницы, которые вам не нужны.

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