Ist es effizienter, RAW-Bilddaten in den Src-Attr zu laden?

8

Ich habe kürzlich herausgefunden, dass das src -Attribut eines Bildes es erlaubt, rohe Basis-64-Bilddaten direkt in das Bild einzufügen. Bin ich der Ansicht, dass dies technisch effizienter ist als eine separate Bilddatei, da keine zusätzlichen Anforderungen für die Bilder gestellt werden müssen? Oder ist der Aufwand so gering, dass es sich nicht lohnt?

Wenn ich das tun würde, was wäre dann der beste Weg, diese Rohdaten zu bekommen? (aus, sagen wir, ein Bild, das ich in Farbe aufgepeitscht habe?)

    
Thomas Shields 12.05.2011, 21:01
quelle

3 Antworten

5

Es hängt davon ab, was Sie mit "effizienter" meinen. Wenn Ihr Maß die Zeit ist, kann effizienter sein

Die Technik, auf die Sie sich beziehen, verwendet einen Daten-URI . Normalerweise nehmen Sie die Bilddaten und base64 encodieren , damit es nur ASCII-Zeichen enthält. base64-Kodierungsdaten haben den Effekt, dass sie 33% größer werden (alle 6 Bits werden zu 8).

Das funktioniert also bei kleinen Bildern, aber bei großen Bildern kann die 33% ige Prämie zu viel sein.

Der Grund, warum es eine gute Idee ist, ist, dass Latenz oft der limitierende Faktor für Browseranforderungen ist. Es war früher (damals), dass Bandbreite die Einschränkung war, also war der allgemeine Ratschlag, Ihre Ressourcen aufzuteilen, aber das stimmt nicht mehr. Bei einem Daten-URI-Bild muss der Browser keinen zweiten Umlauf unternehmen.

Abgesehen von all dem müssen Sie die Browserunterstützung in Betracht ziehen. Vor Version 8 hat IE keine Unterstützung für Daten-URIs. Und in IE 8 gibt es eine Obergrenze von 32 KB Daten.

Hoffe, das hilft!

    
jimbojw 12.05.2011, 21:11
quelle
1

Es gibt eine Größenbeschränkung dafür. Ich weiß es sicher nicht von ganz oben, aber 2K scheint richtig zu sein.

Denken Sie daran, dass Overhead für die Codierung von Base64 besteht. Wenn Sie ein 500-Byte-Bild haben, könnte dies in Ordnung sein, aber für andere Dinge, nein.

Eigentlich sollten Sie dies jetzt nicht aus Kompatibilitätsgründen tun. Vielleicht in den kommenden Jahren ...

    
Brad 12.05.2011 21:09
quelle
1

Es hängt davon ab, wie viele Bilder Sie senden und wie oft sie angefordert werden. Die Bilder in der Basis 64 sind absolut effizienter als 30 HTTP-Anfragen.

Sie können auch das Zwischenspeichern jedes Bildes implementieren, wenn sie häufig angefordert werden. Das haben wir an meinem Arbeitsplatz umgesetzt. Wir speichern die base64 in einem temporären Verzeichnis und prüfen, ob sie bereits verschlüsselt sind. Wenn dies der Fall ist, haben wir eine noch schnellere Antwortzeit, andernfalls werden sie im PHP-Skript im Handumdrehen erstellt. Die beliebteren Seiten werden sehr schnell im Cache aufgewärmt.

    
sciritai 12.05.2011 21:09
quelle

Tags und Links