Я могу подтвердить, что подход в вопросе достаточен для запуска загрузки и кэширования изображений (если вы не запретили браузеру делать это через заголовки ответа), по крайней мере:
- Chrome 74
- Safari 12
- Firefox 66
- Edge 17
Чтобы проверить это, я создал небольшое веб-приложение с несколькими конечными точками, котороекаждый спит по 10 секунд перед тем, как подать фотографию котенка.Затем я добавил две веб-страницы, одна из которых содержала тег <script>
, в котором каждый из котят предварительно загружен с помощью функции preloadImage
из вопроса, а другой , который включает в себя всех котят настраница с использованием тегов <img>
.
Во всех браузерах, указанных выше, я обнаружил, что если я сначала зашел на страницу предварительного загрузчика, подождал некоторое время, а затем перешел на страницу с тегами <img>
, мои котята отрисовалисьмгновенно.Это демонстрирует, что предварительный загрузчик успешно загрузил котят в кеш во всех протестированных браузерах.
Вы можете увидеть или опробовать приложение, которое я использовал для проверки этого на https://github.com/ExplodingCabbage/preloadImage-test.
Обратите внимание, в частности, чтоэта методика работает в вышеупомянутых браузерах, даже если количество зацикленных изображений превышает количество параллельных запросов, которые браузер готов сделать за один раз, вопреки тому, что ответ Робина предлагает.Скорость предварительной загрузки изображений, конечно, будет ограничена количеством параллельных запросов, которые браузер желает отправить, но в конечном итоге будет запрашивать каждый URL-адрес изображения, на который вы звоните preloadImage()
.