Я нашел много способов предварительной загрузки изображений как с помощью CSS, так и с помощью JS, но ни один из них не смог ДЕЙСТВИТЕЛЬНО предварительно загрузить изображения так, как мне нужно, или, точнее, в том порядке, который мне нужен.
Проще говоря, браузер будет предварительно загружать все изображения и прочее в одном блоке, но порядок, в котором каждое изображение будет загружаться браузером, полностью определяется его собственными расчетами, в основном (и вполне разумно) самый верхний элементы в документе будут загружены первыми.
К сожалению, это верно в моих тестах только с <img>
элементами; для других элементов с чем-то вроде фоновых изображений это не совсем так, даже если изображения используются в качестве фона, например, для элемента <body>
.
Единственное решение, которое работало так, как мне было нужно, — это поместить некоторые <img>
elements сразу после <body>
tag и установить их с помощью style="display:none"
. Это работает, но довольно уродливый и ужасно грубый способ добиться этого.
Я также немного беспокоюсь о SEO, так как боты найдут в самом начале документа некоторые скрытые изображения только для этой цели (в основном я предварительно загружаю изображения для эффектов предварительной загрузки, таких как «загрузка..» с небольшим изображением логотипа) .
Я был очень очарован супер блестящим решением, которое я видел, чтобы предварительно загружать изображения с псевдоэлементом на теле, как это body:before
, а затем использовать несколько фоновых изображений. Хотя этот метод действительно работает для предварительной загрузки, он не повлияет на приоритет порядка загрузки ... очень жаль, он такой идеальный! :(
Нет ли на самом деле какого-либо другого способа принудительно загрузить материал с наивысшим приоритетом по сравнению с остальными активами, не загромождая верхнюю часть документа скрытыми изображениями?
ОБНОВЛЕНИЕ
Как я объясняю в комментариях ниже, меня не заботит загрузка изображений в определенном порядке, я хочу, чтобы они загружались ДО того, как большая часть ресурсов и другие элементы в «загрузке ", так что изображения будут отображаться почти мгновенно в браузере вместе с обычным рендерингом макета CSS при доступе к странице.
ОБНОВЛЕНИЕ 2
Дополнительная информация: термин «предварительная загрузка» действительно вводит в заблуждение, более близким термином для того, что я ищу, может быть «предварительная выборка», но в основном это выглядит так:
Большинство браузеров одновременно загружают 6 запросов параллельно, задерживая остальные загрузки. Если то, что вам «действительно» нужно, находится в этих 6 лучших, вам повезло, иначе это в следующих 6, или, может быть, в следующем и так далее.
То, что я пытаюсь сделать, это найти правильный способ сказать «Эй, сначала загрузите это, пожалуйста» и, в частности, «это изображение». Как указал @farkas в ответах ниже, rel="subresource"
действительно хорошее начало, но, как указано здесь, он работает в основном как "[..]предполагает, что на самом деле загружается с более низким приоритетом, чем таблицы стилей/скрипты и шрифты, но с равный или более высокий приоритет, чем у изображений", так что он действительно будет загружаться первым, чем многие другие вещи, но все же нет правильного способа пробиться в эти 6 золотых первых мест.
Как видите, браузер сначала загрузил стили, ЗАТЕМ 1 изображение, которое мне нужно было загрузить как можно скорее, затем скрипты, опустив другие 2 изображения, которые мне нужно было загрузить с наивысшим приоритетом.
Следует отметить, что я разместил все свои скрипты не в шапке, все они размещены внизу перед закрытием </body>
, а также (как указано в начале моего вопроса) я пометил свои изображения СРАЗУ ПОСЛЕ открытия <body>
, но только dark-pattern.jpg
были загружены первыми, остальные 2 были отложены
...
</head>
<body>
<img src="dark-pattern.jpg" style="display:none">
<img src="preloader.jpg" style="display:none">
<img src="xs-style.png" style="display:none">
.. rest of code
...
Я хотел бы знать, как правильно сказать: «Пожалуйста, найдите место для моих фотографий, просто скачайте стили, сценарий может прийти позже».
Можно ли этого добиться?
Я также нашел более подробную информацию по этому вопросу здесь, но ничего по моему конкретному запросу, кроме rel="subresource"
- http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
- http://sgdev-blog.blogspot.it/2014/01/maximum-concurrent-connection-to-same.html
- http://andydavies.me/blog/2013/10/22/how-the-browser-pre-loader-makes-pages-load-faster/
PS. если у всего этого есть конкретное техническое имя, пожалуйста, дайте мне знать, чтобы я, наконец, мог дать зверю имя, спасибо :P
<script defer="" src="src.js"></script>
- person alexander farkas   schedule 22.05.2015