Stavo guardando la fonte di un utente di greasemonkey e ho notato quanto segue nei loro css:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Posso apprezzare che uno script greasemonkey vorrebbe raggruppare tutto ciò che può all'interno del sorgente anziché ospitarlo su un server, è abbastanza ovvio. Ma dal momento che non avevo mai visto questa tecnica in precedenza, ho considerato il suo utilizzo e sembra attraente per una serie di motivi:
- Ridurrà la quantità di richieste HTTP al caricamento della pagina, migliorando così le prestazioni
- Se nessun CDN, ridurrà la quantità di traffico generato attraverso i cookie inviati insieme alle immagini
- I file CSS possono essere memorizzati nella cache
- I file CSS possono essere GZIPPED
Considerando che IE6 (ad esempio) ha problemi con la cache per le immagini di sfondo, sembra che non sia la peggiore idea ...
Quindi, è una pratica buona o cattiva, perché non lo usi e quali strumenti useresti per codificare base64 le immagini?
aggiornamento - risultati dei test
test con immagine: http://fragged.org/dev/map-shot.jpg - 133.6Kb
URL di prova: http://fragged.org/dev/base64.html
file CSS dedicato: http://fragged.org/dev/base64.css - 178.1Kb
Codifica GZIP lato server
dimensione risultante inviata al client (test dei componenti YSLOW): 59.3Kb
Salvataggio dei dati inviati al browser client di: 74.3Kb
Bello, ma sarà leggermente meno utile per immagini più piccole, immagino.
AGGIORNAMENTO: Bryan McQuade, un ingegnere informatico di Google, che lavora su PageSpeed, ha espresso a ChromeDevSummit 2013 che i dati: l'uris nei CSS è considerato un anti-pattern di blocco del rendering per fornire CSS critici / minimi durante il suo discorso
#perfmatters: Instant mobile web apps
. Vedi http://developer.chrome.com/devsummit/sessions e tienilo a mente - slide reale
PRO:
limiti di cache sui dispositivi cellulari ... CON:
alcune immagini dovrebbero essere trattate come contenuto piuttosto che come una semplice presentazione e quindi si adattano meglio ai tag HTML IMG rispetto alle immagini di sfondo CSS.