在CSS中至少有两种使用图像的方法:
带有HTTP请求;
URL(/path/to/image.png)
带有数据网址。
URL(数据:图像/ PNG; BASE64,BASE64_ENCODED_DATA_HERE)
但是我想知道,因为base64编码的数据占用的空间增加了33%,因此加载时间增加了33%,是否值得,或者我应该只发出HTTP请求 - 如果有几个请使用sprite图象?
答案 0 :(得分:4)
单独的请求几乎总是可取的,因为使用data:
URI,
它在旧IE中不起作用,在IE8中限制为32k
可以说它违背了样式和内容的分离
样式表文件被炸毁,如果浏览器的开发人员从不希望CSS文件达到这些大小,可能会造成麻烦
我会在没有其他选择时使用它。
答案 1 :(得分:4)
Web服务器应该通过GZIP处理所有文本文件来节省33%的空间,这样就不会出现这么大的问题。这与减少HTTP请求的数量(which is very important performance-wise)一起使得该方法值得。此外,图像仍然被缓存,但现在在CSS文件中,而不是在单独的文件中。
优选地,嵌入应该使用插入数据URI的构建脚本来完成。这样,在编辑CSS文件时,我们不必关心大块base64编码的数据。此外,如果图像在文件中出现多次,请记住要有一个好的解决方案。重写CSS规则。我们不希望文件大于必要的大小。
虽然IE存在问题。 IE< = 7根本无法处理数据URI,IE8无法处理大于32K的URI。后者可以通过简单地不嵌入太大的图像来解决(也许你不应该这样)。关于IE< = 7,可以通过使用MHTML来解决问题,并使用IE条件注释为不同的浏览器指定不同的CSS文件。
这是一篇关于在CSS中嵌入图像以及如何解决IE问题的好文章:http://blog.meebo.com/?p=2320
答案 2 :(得分:1)
就个人而言,我总是会另外提出要求。我以前在使用Internet Explorer和数据方面遇到了麻烦:url images。
似乎IE8将网址长度限制为32KB,这对图像来说通常是不够的。