为了减少服务器上的请求数量,我将一些图像(PNG和SVG)作为BASE64直接嵌入到CSS中。(它在构建过程中是自动化的)
像这样:
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAFWHRTb2Z0d2FyZQBBZG etc...);
这是一个好习惯吗?有什么理由可以避免这种情况?是否有一些不支持数据URL的主流浏览器?
额外的问题:对CSS和JS这样做也有意义吗?
这是一个好习惯吗?有什么理由可以避免这种情况?
这是一个好习惯,通常仅适用于在IE兼容性无关紧要时将一起使用的非常小的CSS图像(如CSSSprites),并且保存请求比可缓存性更重要。
它有许多明显的缺点:
在IE6和7中根本不起作用。
在IE8中仅适用于最大32k的资源。这是在base64编码之后适用的限制。换句话说,不能超过32768个字符。
它保存了一个请求,但是却使HTML页面肿!并使图像不可缓存。每当包含页面或样式表加载时,它们就会加载。
Base64编码使图像大小膨胀了33%。
如果在压缩后的资源中提供data:图像,几乎可以肯定会对服务器资源造成巨大的压力!传统上,图像压缩需要占用大量CPU资源,而尺寸却很少减少。
data: