何时考虑base64(DATA:URI)图像?

时间:2011-04-13 14:16:22

标签: css image base64

有什么因素可以触发将图像切换到嵌入CSS的Base64?

似乎有很多通用的pro / con类型的东西。维基百科似乎有一个不错的概述:http://en.wikipedia.org/wiki/Data_URI_scheme#Advantages

从我所看到的,似乎使base64成为一个简单决定的一个因素是,如果您的网站必须访问许多单独的小图像,并且拥有一个大文件将更有效地击中服务器50次对于每个单独的图像。

但是......似乎有精灵以及我很少需要在页面上显示50个单独的图像这一事实,Base64并不能为一般网站提供大量的内容。

我应该寻找的关键因素(pro / con)?

(这可能更适合作为社区wiki条目而不是问题)

更新:

也许用一种更简洁的方式来表达这个问题:

考虑到以下两个选项:

1)所有图像都转换为base64并嵌入外部css文件

2)图像聚集在一些精灵图像中,在外部css文件中引用

是否有明显的情况,其中一个比另一个更好,或者它是否真的只是一个案例,同时做两件事并测试事物类型?

3 个答案:

答案 0 :(得分:6)

  

我应该寻找的关键因素(pro / con)?

最大的缺点是IE6 / 7中缺少支持,IE8中的不完整支持(data: URI不得大于32千字节)。

在这种情况下,使用CSS sprites是非常优越的技术。

答案 1 :(得分:3)

这里有两个不同的问题:

1)基地64.这里没有优势。这些文件比二进制文件更胖,并且不太可能被缓存。资源应该在外部文件中,以便可以缓存它们。

2)精灵。 CSS sprites是一种使用单个图像而不是多个图像的技术。图像的一部分通过CSS“显示”。这些更有效,因为大大减少了网络请求的数量。这是值得的。

答案 2 :(得分:0)

当你可以使用css-sprites时,那肯定会更好。

我更喜欢base64 DATA URI的一个特殊情况是我们有一个小图像文件,它将用作repeat-x或repeat-y的背景。由于重复不能很好地与css-sprites一起使用,因此您需要使用单个图像作为源。在这种情况下,我发现使用base64版本是一个更好的选择,它可以为您的Web服务器节省请求。