移动端图片优化
有数量相当的小size图片(数字节~20KB),两种优化方案请帮我分析下优缺点,从服务器压力,客户端响应速度等方面,谢谢
方案1:使用CSS Sprites合并为一张大图
方案2:使用base64直接把图片编码成字符串写入CSS文件
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
有数量相当的小size图片(数字节~20KB),两种优化方案请帮我分析下优缺点,从服务器压力,客户端响应速度等方面,谢谢
方案1:使用CSS Sprites合并为一张大图
方案2:使用base64直接把图片编码成字符串写入CSS文件
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
这两种情况针对的都是图片很少或不会更新使用的,所以在某种程度上,相似度很高(比如都可以减少http请求数、都比直接使用原图片麻烦一点(一个需要拼图,一个需要转码)),这两个方案的区别在于:
综上,权衡这两点,选择你需要的。
update:
我个人看法,建议使用 css sprites,虽然多一个 http 连接,但根据你表述的 有数量相当的小size图片(数字节~20KB),如果采用 base64 编码方案,目测流量要大大增加。多一个连接数对整体影响不大,更何况还有 Browser 的缓存(这个是重点)。
bug fix:
刚忽略了 CSS 也能缓存,经题主提醒,如果将 base64 编码写入 css 文件,而非 html 内部,相比于 css sprites 可以减少一个 http 请求。另外 @p酱 也说了多处重用时无需重复图形内容。
比较两方案相互间的优势。
前者的优势在于
后者的优势在于
我也来update:
总体建议:两者各有优势。如果是大量简单小图片、长时间不需要修改的、需要重复平铺的,可以考虑用base64。如果是经常需要修改的、图片复杂或比较大的、没有重复平铺需要的,以CSS Sprites为优。
如果访问量巨大到一定程度,CSS Sprites多出的一个请求对服务器来说有可能会成为一个大的消耗,如果服务器资源紧缺的话可以考虑全部base64。
就客户端而言,对base64解码和对图片解码,性能负担差距不大,一般可以不用太多考虑。
用PNG Sprite, 否则CPU需要额外开销,我们不能假设用户的CPU都是双核的。