BanterFace
@BanterFace
jack of all trades, master of none

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

Известен начальный размер страницы, нужно узнать процент её загрузки в текущий момент или время, за которое она будет загружаться (но лучше процент). Наверное, чистого решения здесь не выйдет.

Из найденных решений:
1. Вначале загружаем картинку, замеряем время её загрузки, делим размер на время, получаем скорость соединения, делим размер страницы на скорость, получаем время загрузки страницы, загружаем всё остальное.
Минусы: не учитывает время на запросы к серверу, скорость соединения может измениться.
Точность: низкая
2. Упаковываем всё (или делим всё на блоки и упаковываем уже их) во фреймы, ставим им по .load(), в котором увеличиваем значение переменной на 1. Процентное значение — переменная поделённая на общее количество фреймов.
Минусы: очень грязно, ломается вёрстка и взаимодействия элементов друг с другом.
Точность: низкая
3. Проверяем каждую секунду загрузку каждого ресурса
performance.getEntriesByName('ссылка_к_ресурсу')[0]
, если ресурс загружен, повышаем переменную на размер этого ресурса (
performance.getEntriesByName('ссылка_к_ресурсу')[0].decodedBodySize
). Или сразу проверять по .decodedBodySize. Загрузка в процентах — переменная поделённая на общий размер.
Минусы: нельзя узнать процент загрузки ресурса, он либо загружен, либо ещё нет, следовательно, точность будет зависеть от количества и размера ресурсов. Но зато это чистый метод.
Точность: средняя
  • Вопрос задан
  • 2070 просмотров
Решения вопроса 1
lazalu68
@lazalu68
Salmon
Не знаю. Зато парни из HubSpot знают - они сделали PACE.

А вообще подобное наверное проще реализовать с участием сервера - если упростить задачу до индикации отношения количества уже загруженных ресурсов к их общему количеству, то серверу надо будет банально передать количество используемых на странице ресурсов; в этом случае техническая часть фронта тривиальна. Если же хочется считать каждый байт, то можно вежливо попросить сервер передавать объем каждого отдельного ресурса, и использовать эту информацию на фронте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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