小编典典

我应该在CSS或HTML中将图像作为data / base64嵌入吗

html

为了减少服务器上的请求数量,我将一些图像(PNG和SVG)作为BASE64直接嵌入到CSS中。(它在构建过程中是自动化的)

像这样:

background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAFWHRTb2Z0d2FyZQBBZG etc...);

这是一个好习惯吗?有什么理由可以避免这种情况?是否有一些不支持数据URL的主流浏览器?

额外的问题:对CSS和JS这样做也有意义吗?


阅读 311

收藏
2020-05-10

共1个答案

小编典典

这是一个好习惯吗?有什么理由可以避免这种情况?

这是一个好习惯,通常仅适用于在IE兼容性无关紧要时将一起使用的非常小的CSS图像(如CSSSprites),并且保存请求比可缓存性更重要。

它有许多明显的缺点:

  • 在IE6和7中根本不起作用。

  • 在IE8中仅适用于最大32k的资源。这是在base64编码之后适用的限制。换句话说,不能超过32768个字符。

  • 它保存了一个请求,但是却使HTML页面肿!并使图像不可缓存。每当包含页面或样式表加载时,它们就会加载。

  • Base64编码使图像大小膨胀了33%。

  • 如果在压缩后的资源中提供data:图像,几乎可以肯定会对服务器资源造成巨大的压力!传统上,图像压缩需要占用大量CPU资源,而尺寸却很少减少。

2020-05-10