Zur Erinnerung, ich habe keine Lösung mit JavaScript angestrebt, sondern eine Lösung basierend auf dem <link>-Element, mit rel="prefetch"-Attribut. Das ist eine Möglichkeit auf reiner HTML-Basis, dem Browser einen Hinweis darauf zu geben, dass die verlinkte Ressource mit hoher Wahrscheinlichkeit benötigt wird. Es obliegt dann dem Browser zu entscheiden, ob er die Ressouce optimistisch herunterlädt, oder ob er den Hinweis ignoriert. Die Standard-Einstellung der Browser ist es optimistisch zu sein und die Dateien herunterzuladen, man kann es aber explizit unterdrücken, wenn das ungewünscht. Ich wiederhole das nochmal, weil einige deiner Kritikpunkte offenbar auf der Missannahme beruhen, ich strebe eine Lösung mit JavaScript an.
Das sehe ich anders, denn was die meisten User viel mehr stören dürfte ist, das detailreiche Bild gar nicht oder erst verzögert zu Gesicht zu bekommen, wenn sie es wirklich sehen möchten.
Glaube ich nicht, die meisten Benutzer sind daran gewöhnt, dass im "Internet" etwas "laden" muss.
"Nur weil man sich so dran gewöhnt hat, ist es nicht, noch lange nicht, egal" - Kettcar Ein gutes Design agiert subtil im Hintergrund und macht sich eben nicht bemerkbar, mehr will ich dazu nicht sagen.
Das könnte zum Beispiel passieren, wenn die Verbindung vor dem Zeitpunkt, an dem die Großfassung vom Nutzer explizit angefragt wird, getrennt wird (Funkloch? Grenzübergang?).
Was passiert, wenn die Verbindung abreisst, bevor das Bild vorab gelanden werden kann?
Vorab laden bedeutet bei der <link>-Lösung, das Bild nach allen anderen wichtigen Dateien zu laden, die für das intiale Rendering benötigt werden. Die Rendering-Pipeline wird also nicht blockiert. Wenn das geschehen ist, wird das Bild so schnell wie möglich geladen, also nach Möglichkeit, bevor der Nutzer es ausdrücklich anfordert. Das ist ein Vorgang der im Hintergrund geschieht, der Browser kann deswegen auf Netzwerk-Fehler reagieren, und das Bild ggf. erneut anfordern, wenn wieder eine Internet-Verbindung besteht.
Deshalb ist es gut, das Bild so früh wie möglich zu laden und nicht so spät wie nötig. Oder es könnte passieren, dass das Absetzen der Anfrage so lange dauert, dass es vom Nutzer gänzlich unbemerkt bleibt, dann erhält er vermutlich nur den Eindruck, dass mit der Seite irgendetwas nicht stimmt.
Nein, dann sagt dir der Browser idR., dass keine Internetverbindung besteht :)
Sollte die Antwort vielleicht auch einen Absatz weiter oben stehen? Auf jeden Fall gilt auch hier meine Maxime, ein gutes UI lässt es erst gar nicht so weit kommen, ein weniger gutes Interface benachrichtigt den User zumindest über den Fehler und ein schlechtes Interface bemerkt den Fehler selber nicht.
Ein Bild, welches vorgeladen und dann vom Nutzer nie explizit angefordert wird, ist natürlich Verschwendung,
Ja, das ist mein primäres Argument.
aber einerseits landet das Bild im Cache und steht damit auf Abruf bereit und andererseits bleibt diese Verhalten vom Nutzer unbemerkt, er wird es der Seite also auch nicht negativ anlasten.
Da hast du einen Denkfehler - warum soll man den Cache "zumüllen", wenn das Bild nicht gebraucht wird, wenn er es nie braucht? Wenn ich unterwegs einen Wikipedia-Artikel lese, weil ich schnell was nachlesen will, reichen mir die "Briefmarken" und ich muss sie nicht vergrößern - obwohl das Datenvolumen nicht mein Problem ist.
Ich wollte nur daran erinnern, dass es zwischen "Jetzt oder nie" auch noch die Fälle: "Jetzt oder später" gibt. Cache zumüllen lasse ich nicht als Kontra-Argument gelten, jeder Browser weiß, wie er seinen Cache sinnvoll verwaltet, das tangiert den Nutzer nicht im Geringsten.
Zudem gibt es ja für Technik-Geeks die Möglichkeit das optimistische Vorladen per Browser-Einstellung zu unterbinden.
Das ist die Standardeinstellung so ziemlich jedes Browsers: unsichtbare Ressourcen werden nicht geladen :) wenn man das Preloading dann z.B. per JavaScript umgeht, hat man keine (einfache) Möglichkeit mehr, das zu umgehen - auf Mobilgeräten ist das nicht so einfach wie am Desktop, selbst für "Geeks"
Wie bereits erwähnt, spreche ich nicht von einem JavaScript- oder CSS-Hack, sondern von einer Lösung basierend auf reinem HTML. Genau für diesen Fall bieten Browser eine Option an, um das optimistische Vorladen zu deaktivieren.
Ich bin nicht bereit für Telefonie/Datendienste so viel Geld auszugeben - und viele andere aufgrund der Tarifsituation und den großzügigen Volumina auch nicht - und trotzdem kann man das Datenvolumen nicht einfach verschwenden, ein paar GB sind schnell weg - ein bisschen Musik streamen, ein bisschen Video schauen, ein paar Nachrichten im Messenger schicken - und wenn du dann mit bereits aufgebrauchtem Datenvolumen auf eine Website gehst, dir dir für einen Aufruf quasi 25 Cent abknöpft, weil sie dir rund 10 MB Bilder im Hintergrund runterläd, wirst du dir nachher gut überlegen, ob du das nochmal machst.
Aber der Flaschenhals sind hier doch ganz klar die gestreamten Videos und die Musik und nicht die paar Bilder, die eine Webseite mit sich bringt. Und wie gesagt, es gibt immer noch die Möglichkeit, das optimistische Vorladen durch eine Einstellung zu unterbindne.
wieso also pessimistisch vorgehen und auch jenen Nutzern eine schlechtere UX bieten, die eigentlich eine unbeschränkte Leitung zur Verfügung haben?
Weil es das Standardverhalten darstellt und erwartungskonform ist?
Ich erwarte von einer Webseite schnelle Reaktionszeiten, sie soll responsiv im eigentlichen Wortsinn sein, Wartezeiten passen da nicht ins Schema. Und Standardverhalten ist link[prefetch] wohl auch.