Сообщение Re: Надёжное обновление страницы от 17.07.2020 12:34
Изменено 17.07.2020 12:40 vsb
Re: Надёжное обновление страницы
Я бы попробовал сделать AJAX-запрос /index.html и потом заменить тело страницы на полученные данные при успешной загрузке.
Re: Надёжное обновление страницы
Я бы попробовал сделать AJAX-запрос /index.html и потом заменить тело страницы на полученные данные при успешной загрузке.
Чтобы обезопасить себя от недозагруженных скриптов, можно сделать так:
В самом начале страницы сделай reloadIndexHtmlTimeout = setTimeout(reloadIndexHtml, 10000). Прям в теге скрипт. Первый кусок страницы-то уж точно придёт. Ну и эту функцию reloadIndexHtml туда же. В общем 1-2 IP пакета и в браузере этот скрипт выполнится и пойдёт отсчёт. Дальше, если будут любые проблемы с загрузкой, через 10 секунд опять пойдёт попытка AJAX-ом загрузить и тд. Тут уже сам пиши, чтобы было надёжно отработаны ошибки, ретраи и тд. А так — в самом конце сделай аналог document.addEventListener("DOMContentLoaded", function() { clearTimeout(reloadIndexHtmlTimeout); }). Конкретно этот код, мне кажется, не сработает, то бишь он будет работать даже при загрузке JS с ошибками, поэтому надо погуглить, как определить тот факт, что JS не загрузился и тут прописать эти условия. Ну или в конце своего JS-файла просто поставляй флажок, если полностью прогрузится, то этот флажок проставится.
Чтобы обезопасить себя от недозагруженных скриптов, можно сделать так:
В самом начале страницы сделай reloadIndexHtmlTimeout = setTimeout(reloadIndexHtml, 10000). Прям в теге скрипт. Первый кусок страницы-то уж точно придёт. Ну и эту функцию reloadIndexHtml туда же. В общем 1-2 IP пакета и в браузере этот скрипт выполнится и пойдёт отсчёт. Дальше, если будут любые проблемы с загрузкой, через 10 секунд опять пойдёт попытка AJAX-ом загрузить и тд. Тут уже сам пиши, чтобы было надёжно отработаны ошибки, ретраи и тд. А так — в самом конце сделай аналог document.addEventListener("DOMContentLoaded", function() { clearTimeout(reloadIndexHtmlTimeout); }). Конкретно этот код, мне кажется, не сработает, то бишь он будет работать даже при загрузке JS с ошибками, поэтому надо погуглить, как определить тот факт, что JS не загрузился и тут прописать эти условия. Ну или в конце своего JS-файла просто поставляй флажок, если полностью прогрузится, то этот флажок проставится.