Grafik/Grafiken mit Data-URI

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche

Wussten Sie schon, dass Sie Bilder ohne einen weiteren HTTP-Request durch das Laden einer externen Bild-Datei in HTML-Seiten einbauen können?

Inhaltsverzeichnis

[Bearbeiten] Einsatz im HTML

  • IE 8
  • Firefox
  • Safari
  • Chrome
  • Opera
Beispiel ansehen …
<!-- … --> <h1>Grafiken mit Data-URI</h1> <h2>tick</h2> <img width="16" height="16" alt="tick" src="data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYY DJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2CmV1unU4zPgISg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW 7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQPbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReAS FZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7"> <!-- … -->

Wenn man diese Seite speichert, so ist das Bild immer noch fest im HTML-Code verdrahtet. Kein Warten also, bis die Bilder nachgeladen sind. Es ist keine Spielerei, sondern so wird es möglich, z.B. Firmenlogos fest in die HTML-Seiten zu integrieren.

Beispiel: Schema
data:[<mime type>][;charset=<Zeichensatz>][;base64],<Daten>

Der MIME-Type zeigt, welches Grafik-Format verwendet wird, charset die Zeichenkodierung und base64 die Datenkodierung.

Die Daten können durch Leerzeichen getrennt und so formatiert werden.

Internet Explorer 8 begrenzt die Länge der Data-URLs auf 32 Kilobyte.

Beachten Sie: Gerade Firmenlogos oder öfter verwendete Symbole werden aber nicht immer wieder neu übertragen, sondern aus dem Cache aufgerufen. Dieser Vorteil geht hier verloren.
Beachten Sie: Data-URIs benötigen maskierte Sonderzeichen:
  • Internet Explorer versteht kein < und >
  • Firefox versteht kein # [1]

[Bearbeiten] Einsatz im CSS

Wenn Sie Grafiken im HTML als Data-URI referenzieren, werden diese nicht im Cache vorgehalten, wie es bei einer Grafikdatei der Fall wäre. Die Grafik muss also für jede Seite, auf der sie benötigt, wird neu übertragen werden, solange sich nicht das HTML-Dokument selbst im Cache befindet.

Wenn Sie die Grafiken in eine externe CSS-Ressource einbinden, können Sie erreichen, dass auch diese Grafiken als Bestandteil der CSS-Ressource nur einmal übertragen werden müssen.

Beispiel ansehen …
li { background: url(data:image/gif;base64,R0lGODdhEAAQAMwAAPj7+FmhUYjNfGuxYYDJdYTIeanOpT+DOTuANXi/bGOrWj6CONzv2sPjv2Cm V1unU4zPgI/Sg6DJnJ3ImTh8Mtbs00aNP1CZSGy0YqLEn47RgXW8amasW7XWsmmvX2iuXiwAAAAAEAAQAAAFVyAgjmRpnihqGCkpDQ PbGkNUOFk6DZqgHCNGg2T4QAQBoIiRSAwBE4VA4FACKgkB5NGReASFZEmxsQ0whPDi9BiACYQAInXhwOUtgCUQoORFCGt/g4QAIQA7) no-repeat left center; }

[Bearbeiten] Gegenüberstellung

Beachten Sie: → Alternativen wie der Einsatz von SVG-Sprites, CSS-Sprites oder UTF-8-Symbolen als Icons sind praktischer.

Sie finden hier das erste Beispiel einmal mit Grafiken als Data-URI und einmal als extern referenzierte Grafiken.

Beispiel: Data-URI ansehen …
  • Speicherbedarf: 26.289 Byte
  • zu übertragende Datenmenge: 19.255 Byte
  • Anzahl HTTP-Requests: 1
  • Ladezeit beim erstmaligen Laden: 200 ms
  • Ladezeit nach Caching: 200 ms
Beispiel: externe Grafiken ansehen …
  • Speicherbedarf: 20.143 Byte
  • zu übertragende Datenmenge: 19.211 Byte
  • Anzahl HTTP-Requests: 4
  • Ladezeit beim erstmaligen Laden: 480 ms
  • Ladezeit nach Caching: 300 ms

[Bearbeiten] Quellen

  1. selfHTML-Forum: SVG-Sprites in CSSvom 24.11.2015

[Bearbeiten] Weblinks

Meine Werkzeuge
Namensräume

Varianten
Aktionen
Übersicht
Index
Mitmachen
Werkzeuge
Spenden
SELFHTML