Ich habe mir die Quelle eines Greasemonkey-Benutzer-Skripts angesehen und in ihrem CSS Folgendes festgestellt:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Ich kann verstehen, dass ein Greasemonkey-Skript alles, was es kann, in der Quelle bündeln möchte, anstatt es auf einem Server zu hosten, das ist offensichtlich genug. Da ich diese Technik zuvor noch nicht gesehen hatte, habe ich über ihre Verwendung nachgedacht und sie scheint aus mehreren Gründen ansprechend zu sein:
- Dadurch wird die Anzahl der HTTP-Anforderungen beim Laden der Seite verringert und somit die Leistung verbessert
- Wenn kein CDN vorhanden ist, wird der Datenverkehr reduziert, der durch Cookies generiert wird, die neben Bildern gesendet werden
- CSS-Dateien können zwischengespeichert werden
- CSS-Dateien können GZIPPED sein
Wenn man bedenkt, dass IE6 (zum Beispiel) Probleme mit dem Cache für Hintergrundbilder hat, scheint dies nicht die schlechteste Idee zu sein ...
Also, ist dies eine gute oder schlechte Praxis, warum würden Sie es nicht verwenden und welche Tools würden Sie verwenden, um die Bilder mit base64 zu codieren?
Update - Testergebnisse
Testen mit Bild: http://fragged.org/dev/map-shot.jpg - 133.6Kb
Test-URL: http://fragged.org/dev/base64.html
dedizierte CSS-Datei: http://fragged.org/dev/base64.css - 178.1Kb
GZIP-Codierungsserverseite
resultierende Größe an Client gesendet (YSLOW-Komponententest): 59,3 KB
Speichern von an den Client-Browser gesendeten Daten von: 74,3 KB
Schön, aber für kleinere Bilder ist es etwas weniger nützlich, denke ich.
UPDATE: Bryan McQuade, ein Softwareentwickler bei Google, der an PageSpeed arbeitet, hat auf der ChromeDevSummit 2013 zum Ausdruck gebracht, dass data: uris in CSS während seines Vortrags als Render-Blocking-Anti-Pattern für die Bereitstellung von kritischem / minimalem CSS angesehen wird
#perfmatters: Instant mobile web apps
. Siehe http://developer.chrome.com/devsummit/sessions und denken Sie daran - tatsächliche Folie
PRO:
Cache-Beschränkungen auf Mobilfunkgeräten ... CON:
Einige Bilder sollten eher als Inhalt als als einfache Präsentation behandelt werden und eignen sich daher besser für HTML-IMG-Tags als für CSS-Hintergrundbilder.