Eu estava olhando para a fonte de um script de usuário greasemonkey e notei o seguinte em seu css:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Compreendo que um script greasemonkey deseje agrupar tudo o que puder na fonte, em vez de hospedá-lo em um servidor, isso é óbvio o suficiente. Mas como não tinha visto essa técnica anteriormente, considerei seu uso e parece atraente por várias razões:
- Reduzirá a quantidade de solicitações HTTP no carregamento da página, melhorando o desempenho
- Se não houver CDN, reduzirá a quantidade de tráfego gerado pelos cookies enviados juntamente com as imagens
- Arquivos CSS podem ser armazenados em cache
- Arquivos CSS podem ser GZIPPED
Considerando que o IE6 (por exemplo) tem problemas com o cache de imagens de fundo, parece que essa não é a pior idéia ...
Portanto, essa é uma prática boa ou ruim, por que você não a usa e quais ferramentas você usa para codificar as imagens na base64?
update - resultados dos testes
testando com imagem: http://fragged.org/dev/map-shot.jpg - 133,6 KB
URL de teste: http://fragged.org/dev/base64.html
arquivo CSS dedicado: http://fragged.org/dev/base64.css - 178,1 KB
Lado do servidor de codificação GZIP
tamanho resultante enviado ao cliente (teste de componentes YSLOW): 59,3 KB
Salvamento dos dados enviados ao navegador do cliente de: 74.3Kb
Bom, mas será um pouco menos útil para imagens menores, eu acho.
ATUALIZAÇÃO: Bryan McQuade, engenheiro de software do Google, que trabalha no PageSpeed, expressou no ChromeDevSummit 2013 que dados: uris em CSS são considerados um anti-padrão de bloqueio de renderização por fornecer CSS crítico / mínimo durante sua palestra
#perfmatters: Instant mobile web apps
. Consulte http://developer.chrome.com/devsummit/sessions e lembre-se disso - slide real
PRO:
limites de cache em dispositivos celulares ... CON:
algumas imagens devem ser tratadas como conteúdo em vez de simples apresentação e, portanto, são mais adequadas para tags HTML IMG do que imagens de fundo CSS.