Mogę potwierdzić, że podejście zawarte w pytaniu jest wystarczające, aby obrazy zostały pobrane i zapisane w pamięci podręcznej (chyba, że przeglądarka zrobiła to za pomocą nagłówków odpowiedzi), przynajmniej:
- Chrome 74
- Safari 12
- Firefox 66
- Edge 17
Aby to przetestować, stworzyłem małą aplikację internetową z kilkoma punktami końcowymi, z których każdy śpi przez 10 sekund przed podaniem zdjęcia kota. Następnie dodałem dwie strony internetowe, z których jedna zawierała <script>tag, w którym każda z kociąt jest wstępnie załadowana za pomocą preloadImagefunkcji z pytania, a druga zawiera wszystkie kocięta na stronie za pomocą <img>tagów.
We wszystkich powyższych przeglądarkach stwierdziłem, że jeśli najpierw odwiedzę stronę modułu wstępnego ładowania, zaczekam chwilę, a następnie przejdę na stronę z <img>tagami, moje kocięta wyrenderują się natychmiast. To pokazuje, że moduł wstępnego ładowania pomyślnie załadował kocięta do pamięci podręcznej we wszystkich testowanych przeglądarkach.
Możesz sprawdzić lub wypróbować aplikację, której użyłem do przetestowania tego na https://github.com/ExplodingCabbage/preloadImage-test .
W szczególności zauważ, że ta technika działa w powyższych przeglądarkach, nawet jeśli liczba zapętlonych obrazów przekracza liczbę równoległych żądań, które przeglądarka jest skłonna wysyłać jednocześnie, w przeciwieństwie do sugestii Robina . Tempo, w jakim obrazy preload będzie oczywiście ograniczona jak wiele równoległych żąda przeglądarka jest gotowa do wysłania, ale to będzie ostatecznie wystąpić każdy adres URL obrazu, który nazywamy preloadImage()dalej.
imgobiektu, np. W tablicy w zakresie nadrzędnym.