Chrome инженер здесь. Здесь есть несколько несоответствий, из того, что я могу сказать:
- Во-первых, вы можете видеть, что Firefox на самом деле извлекает
image.jpeg
и до предварительной загрузки, учитывая ваше изображение - Во-вторых, я иногда могу заставить Safari также создать странный порядок:
Здесь вы видите Chrome * (и некоторых других браузеров) фоновый парсер HTML в работе, который является еще одним легковесным парсером, который быстро просматривает страницу в поисках ресурсов для умозрительного (раннего) извлечения. После небольшой отладки Chrome на странице примера, которую вы создали, порядок происходящих событий примерно такой:
- Спекулятивный анализатор запускает запрос на
script.js
- Спекулятивный Парсер запускает запрос для
image.jpeg
- Обычный парсер выполняет ожидающий сценарий блокировки синтаксического анализа документ
- Три предварительные загрузки извлекаются в порядке их добавления
Таким образом, в этом случае вы видите, что анализатор спекулятивных / фоновых событий немного забегает вперед, и начинаете извлекать информацию, прежде чем основной анализатор сможет сделать это через ваш тег script
. У большинства браузеров такой синтаксический анализатор есть статья об этом , и, к сожалению, он не указан ни в одном стандарте, поскольку он не должен иметь никаких наблюдаемых (для кода приложения) эффектов.
Однако, если вы видите проблему с производительностью из-за этого, лучше всего подать сообщение об ошибке Chromium на https://crbug.com и, возможно, дайте мне знать, и я смогу сообщить об этом нужным людям. .
PS Я заметил, вы подали https://github.com/w3c/preload/issues/146, которую я, вероятно, закрою в пользу того, чтобы вы подали ошибку Chrome, если все в порядке.