5 Stimmen

Funktioniert es oder macht es Sinn, eine Ressource durch DOM-Injektion dynamisch vorzuladen?

Dies ist größtenteils eine theoretische Frage, für die ich einen praktischen Zweck habe. Zuerst suche ich nach einigen konzeptionellen Antworten, bevor ich mich in die Praxis stürze, da die Idee selbst vielleicht keinen Sinn ergibt.

Stellen Sie sich eine Diashow vor, die vollständig auf JavaScript basiert. Benutzer sehen ein großes Bild auf ihrem Bildschirm und klicken, um zum nächsten großen Bild zu gelangen. Beim Klicken wird das nächste Bild geladen und in den DOM eingefügt, wodurch das vorherige ersetzt wird.

Ich habe kürzlich gelernt, dass Prefetching-Direktiven dazu beitragen können, das Laden von Ressourcen zu beschleunigen, die sehr wahrscheinlich als nächstes verwendet werden. Beachten Sie, dass ich von Ressourcen, nicht von Seiten, gesprochen habe. Die Diashow ist eine einzige Seite.

Bei einer Bild-Diashow ist es sehr offensichtlich, dass es wahrscheinlich ist, dass das nächste Bild benötigt wird, also könnte ich dynamisch Folgendes zum DOM hinzufügen:

Meine Fragen zu dieser Idee:

  • Würde es überhaupt funktionieren? Akzeptieren Browser diese Direktive, wenn sie zur Laufzeit dynamisch in den DOM eingefügt wird? Würde es das Prefetching auslösen?
  • Besteht die Möglichkeit von Timing-Konflikten, bei denen, wenn das Prefetching tatsächlich funktionieren würde, es nicht rechtzeitig vor dem "load" des Benutzers abgeschlossen wäre? Offensichtlich kann dies passieren, aber wird es unerwünschte Nebenwirkungen haben?
  • Werden spezifische Ereignisse wie das Laden des Bildes immer noch korrekt funktionieren, oder werden sie im Falle eines erfolgreichen Prefetchs niemals ausgelöst (vorausgesetzt, es funktioniert überhaupt)?

Ich habe viel recherchiert, aber ich kann keine Antworten auf diese spezifische Situation von dynamisch eingesetzten Prefetch-Hinweisen finden.

4voto

Alexander Gessler Punkte 44223

onload wird immer ausgelöst, auch wenn das Bild aus dem Cache kommt. Sie müssen sich keine Gedanken über zeitliche Effekte oder Wettlaufbedingungen machen, solch ein Verhalten wäre ein Browserfehler.

Wie in den Kommentaren erwähnt, ist rel=prefetch nicht der einzige Weg, um Vorabladen zu erreichen. Es funktioniert jedoch auch, wenn es dynamisch in den DOM eingefügt wird. Schließlich könnten Sie das Bild ohne das prefetch-Attribut vorabladen und verstecken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X