Ich kann bestätigen, dass der Ansatz in der Frage ausreicht, um das Herunterladen und Zwischenspeichern der Bilder auszulösen (es sei denn, Sie haben dem Browser dies über Ihre Antwortheader verboten), zumindest in:
- Chrome 74
- Safari 12
- Firefox 66
- Kante 17
Um dies zu testen, habe ich eine kleine Webanwendung mit mehreren Endpunkten erstellt, die jeweils 10 Sekunden lang schlafen, bevor ich ein Bild eines Kätzchens serviere. Dann habe ich zwei Webseiten hinzugefügt, von denen eine ein <script>Tag enthielt, auf dem jedes der Kätzchen mit der preloadImageFunktion aus der Frage vorinstalliert ist , und die andere alle Kätzchen auf der Seite mit <img>Tags enthält.
In allen oben genannten Browsern stellte ich fest, dass <img>meine Kätzchen sofort gerendert wurden , wenn ich zuerst die Preloader-Seite besuchte, eine Weile wartete und dann zur Seite mit den Tags ging. Dies zeigt, dass der Preloader die Kätzchen in allen getesteten Browsern erfolgreich in den Cache geladen hat.
Sie können die Anwendung, mit der ich dies getestet habe, unter https://github.com/ExplodingCabbage/preloadImage-test sehen oder ausprobieren .
Beachten Sie insbesondere, dass diese Technik in den oben genannten Browsern auch dann funktioniert, wenn die Anzahl der Bilder, die durchlaufen werden, die Anzahl der parallelen Anforderungen überschreitet, die der Browser gleichzeitig bereit ist, entgegen Robins Antwort . Die Geschwindigkeit , mit der Sie Ihre Bilder Vorspannung wird natürlich durch , wie viele parallele begrenzt werden ersucht den Browser zu senden bereit ist, aber es wird verlangen schließlich jedes Bild URL Sie rufen preloadImage()auf.
imgObjekt bei, z. B. in einem Array im übergeordneten Bereich.