Estaba mirando la fuente de un script de usuario de greasemonkey y noté lo siguiente en su CSS:
.even { background: #fff url(data:image/gif;base64,R0lGODlhBgASALMAAOfn5+rq6uvr6+zs7O7u7vHx8fPz8/b29vj4+P39/f///wAAAAAAAAAAAAAAAAAAACwAAAAABgASAAAIMAAVCBxIsKDBgwgTDkzAsKGAhxARSJx4oKJFAxgzFtjIkYDHjwNCigxAsiSAkygDAgA7) repeat-x bottom}
Puedo apreciar que un script de greasemonkey querría agrupar todo lo que pueda dentro de la fuente en lugar de alojarlo en un servidor, eso es bastante obvio. Pero como no había visto esta técnica anteriormente, consideré su uso y parece atractivo por varias razones:
- Reducirá la cantidad de solicitudes HTTP en la carga de la página, mejorando así el rendimiento
- Si no hay CDN, reducirá la cantidad de tráfico generado a través de las cookies que se envían junto con las imágenes
- Los archivos CSS se pueden almacenar en caché
- Los archivos CSS pueden ser GZIPPED
Teniendo en cuenta que IE6 (por ejemplo) tiene problemas con el caché para imágenes de fondo, parece que no es la peor idea ...
Entonces, ¿es una buena o mala práctica, por qué NO la usarías y qué herramientas usarías para codificar las imágenes en base64?
actualización: resultados de las pruebas
prueba con imagen: http://fragged.org/dev/map-shot.jpg - 133.6Kb
URL de prueba: http://fragged.org/dev/base64.html
archivo CSS dedicado: http://fragged.org/dev/base64.css - 178.1Kb
Lado del servidor de codificación GZIP
tamaño resultante enviado al cliente (prueba de componentes YSLOW): 59.3Kb
Guardado de datos enviados al navegador del cliente de: 74.3Kb
Agradable, pero supongo que será un poco menos útil para imágenes más pequeñas.
ACTUALIZACIÓN: Bryan McQuade, un ingeniero de software de Google, que trabaja en PageSpeed, expresó en ChromeDevSummit 2013 que los datos: uris en CSS se considera un antipatrón de bloqueo de renderizado para entregar CSS crítico / mínimo durante su charla
#perfmatters: Instant mobile web apps
. Consulta http://developer.chrome.com/devsummit/sessions y tenlo en cuenta: diapositiva real
PRO:
límites de caché en dispositivos celulares ... CON:
algunas imágenes deben tratarse como contenido en lugar de una simple presentación y, por lo tanto, se ajustan mejor a las etiquetas HTML IMG que a las imágenes de fondo CSS.