@
jacy Data URI 有一个好处是 gzip,图片一般很难压缩,打比方,我有一个页面,分别用 Data URI 和普通 src 链接了同一张图,从 Chrome Developer Tools 观察到 HTML + Base64 大小为 27.87KB,gzip 后 20.43KB,图片是 17.29KB 和 17.57KB,传输时间平均值分别是 ~1.3s 和 ~1s。
虽然 base64 体积会比原文件稍大一点点,但是在 gzip 的影响下,一定尺寸内的文件还是建议能用 Data URI 就用,体验上会好一些:
- Data URI 可以省去 DNS lookup、connecting 和 waiting 的消耗(因为和包含它的文件共用了),消去了「比原文件稍大」的缺点;
- Data URI 不需要单独的请求也就意味着不需要进入请求队列,特别是对于某些需要尽快显示的图片来说,HTML 下载到它的位置就可以直接显示了。
除了会增大包含的文件的体积外,也有别的缺点:
- 不适合 lazy loading;
- 不适合图库类或需要交互的,比如 slideshow、fancybox。