浅谈前端的图片优化

近期一直在和朋友讨论前端性能优化的问题,着重聊到了图片相关的优化,就想着总结记录一下。

说到图片优化主要从两个点入手,分别是优化体积和合并请求,下面我分别展开说下这两点。

优化体积

就优化体积来说,方法还是比较有限,无外乎压缩图片大小,根据视图需要选择合适的图片尺寸。

图片压缩

我们知道图片是有很多格式的,包括jpg、png、gif等,单就大小来说有损压缩的jpg格式一般是会比无损压缩的png要小的多的,但是它不支持透明;且单就png来说还区分png8、png24、png32,我们需要根据自身业务使用场景选择最优的格式,当然如果支持webp的话webp一定是最优解。

尺寸选择

选择尺寸就更好理解了,比如视图是一个固定400*300的区域,你肯定不需要放一个4000*3000的图片上去,当然现代的前端项目或多或少都需要考虑不同端的适配,我这边的处理方式是通过公司私有的图片服务器处理,你只需要上传一张原图,获取图片时根据需要带长宽参数即可获得相应大小的图片。


请求合并(针对小图或icon)

请求合并是前端优化的必要手段,不止是针对图片,这里我只列举针对图片优化的方案,当然每种方案都有他的弊端。

1. 雪碧图

用雪碧图来合并多张小图片的方案已经有很多年了,它成本低兼容好,确实能解决不少问题,但是使用雪碧图同时会带来一些副作用需要我们解决。

首先就是内存问题,由于我们把多张图片合并成一张大图,所以渲染时每次都会加载整张雪碧图,这样对于内存的开销来说实际上是更大的,解决的办法就是尽量减少图片间的留白,以及控制一张雪碧图的内容不要太多。

还有就是缩放的问题,我们都知道background-size是针对整张图片的缩放,在移动端适配多尺寸时再使用固定的px定位就会出现偏差,一般这个时候我们都会使用百分比或者rem的方式来处理,不过在部分机型上还是会出现边缘的情况,一个朋友提出了transform的解决方案,不过笔者目前还没有验证。

2. toDataUrl

toDataUrl的方案相比于雪碧图晚了些,它可以通过base64字符串来描述图片本身从而减少图片的请求;它所带来的问题是会增大体积页面本身文件大小,而且由于是内联字符串会导致图片无法缓存。

3. iconfont/svg/CSS

最后就是通过iconfont/svg/CSS等方式来模拟图片展示,这个方案可以算是是最通用的兼容最好的方案,但是也不是绝对的完美方案;就iconfont来说只能是纯色的,不能像图片那样颜色丰富,而svg和css或多或少都有一些兼容性问题。


写在最后

我们在优化图片的时候还可以设置一些缓存策略以及根据业务场景使用一些懒加载的策略,因为这两条属于所有请求通用的方案,这里就不展开说了。最后说一句我们在进行前端优化时需要根据自身需要定制优化方案,切不可为了优化而盲目优化。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343