Параллельная загрузка файлов JS в HTML

У меня есть HTML-файл, который выглядит так

 <html>
    <head>
        <script src="1.js"></script>
        <script src="2.js"></script>
        ...
        <script src="200.js"></script>
    </head>
 </html>

1.js содержит только одну строку

window.performance.setResourceTimingBufferSize(250);

По умолчанию размер буфера ресурсов в Chrome равен 150.

Но когда я вижу все ресурсы, используя Resource Timing API, длина ресурсов не равна 200. Она постоянно меняется случайным образом от 150 до 200.

Я знаю, почему это происходит. Потому что Chrome пытается загружать ресурсы параллельно и, следовательно, он регистрирует ресурсы в API синхронизации ресурсов.

Фрагмент в 1.js

window.performance.setResourceTimingBufferSize(250);

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

Есть ли способ остановить параллельную загрузку ресурсов? Сначала загрузите первый ресурс, позвольте коду выполнить, а затем возобновите загрузку оставшихся ресурсов параллельно.

0 ответов

Для setResourceTimingBufferSize существует событие resourcetimingbufferfull. Говорят, что объекты PerformanceResourceTiming не должны быть удалены из буфера записи производительности.

var buffSize = 100

if (window.performance && window.performance.addEventListener) window.performance.addEventListener('resourcetimingbufferfull', function(){
  buffSize += 100
  window.performance.setResourceTimingBufferSize(buffSize);
})

Когда буфер заполнен, он увеличивается на +100

Другие вопросы по тегам