有什么因素可以触发将图像切换到嵌入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文件中引用
是否有明显的情况,其中一个比另一个更好,或者它是否真的只是一个案例,同时做两件事并测试事物类型?
答案 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服务器节省请求。