Desead
@Desead

Как избежать паузы при загрузке страницы?

Создал свой первый сайт на django. Всё ок, но заметил одну неприятную особенность. Захожу на сайт (на локальный или в сети уже, без разницы) и когда хожу по разным страницам,то вижу что сначало подгружается белый фон со страницей из шаблона - это малая часть страницы, потом только генерируется остаток страницы с помощью js и применяется css. В итоге возникает разница между рендером шаблона на сервере и у пользователя где-то в пол секунды или даже меньше. Бесит жутко, выглядит как разовое мерцание при заходе на новую страницу.
Использую djano, без DRF, данные отдаю в json на endpoint. Страница генериться на клиенте. Ииспользую чистый js и css.
В чём может быть проблема ?
  • Вопрос задан
  • 193 просмотра
Пригласить эксперта
Ответы на вопрос 1
@pyHammer
Desead могу только предположить. С Django это не связано, а связано с тем что вы все подгружаемые файлы расположили в head. Из-за того что браузер читает станицу с веру вниз, то происходит следующее:
- Сначала браузер видит, стили, загружает их.
- Далее он видит скрипты и начинает загрузку их.
- Только после загрузки всех ресурсов из head, браузер читает страницу дальше, то есть body.
Вот и получается, что вы видите белую страницу, пока ждёте когда браузер загрузит все ресурсы из head.
Чтобы этого избежать минимизируйте вызовы ресурсов в head, а все теги script нужно перенести в конец body.

А ещё, так как вы рендерите страницу на клиенте, то эта задержка будет всегда. Чтобы нивелировать ее, нужно сделать прелоадер. Стили прелоадера нужно расположить как можно раньше в head, и не подключаемым файлом, а напрямую в head в теге style. Прелоадер по умолчанию отображается, а уже в js после всех манипуляций вы его скрываете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы