程序员IT平头哥联盟

这份优化清单,你做了哪些?

2018-10-15  本文已影响141人  苏南South
本文由@IT·平头哥联盟-首席填坑官∙苏南 分享

引言

​ 大家好,这里是@IT·平头哥联盟,我是首席填坑官——苏南(South·Su),今天是国庆节的第二天,这个假期没有外出(不要问我为什么,自己脑补~😭),前些天分享了一篇前端面试汇总的文章,有些同学在群里问了其中的一些细节,其中大家最关心的性能优化这块,今天整理了公司项目中的一些认为不错的点,跟大家一起分享,如有理解错误,请纠正。

优化概括

1、首先最基本的,CSS样式表放在页面头部Head内且link链式引入,javascript放在底部body结束标签前避免阻塞。

2、js/html/css/图片都做压缩合并,图片预加载、懒加载,也是老生常谈了,在这里推荐一个图片无损极限压缩的工具,能压小60~80%左右,比较麻烦的是每次要手动操作——TinyPNG,有兴趣的同学了可以了解一下他们的API,自己封装一个服务调用压缩,不过免费次数有限制哦。

3、减少DOM元素数量,减少DOM的操作:

4、静态资源CDN分发:

WebP最初在2010年发布,目标是减少文件大小,支持无损、有损压缩,动态、静态图片,压缩比率优于 GIF、JPEG、JPEG2000、PNG 等格式,非常适合用于网络等图片传输,现在开始已经被越来越多的浏览器支持,当然 WebP 格式也有它的缺点,算法相对其他格式更加复杂,会在节省流量资源的同时会占用计算资源,对计算机造成更大的负担,WebP支持的像素最大数量是16383x16383。有损压缩的WebP仅支持8-bit的YUV4:2:0格式。而无损压缩(可逆压缩)的WebP支持VP8L编码与8-bit之ARGB色彩空间。又无论是有损或无损压缩皆支持Alpha透明通道、ICC色彩配置、XMP诠释数据,更详细支持说明:caniuse.com

优势

  • 体积小几乎可以毫不夸张的说,已经小的不能再小了;
  • 小而美的同时,还质量好,几乎看不出来与原图差别;
  • 曾经的动态图gif、jpeg压缩都会不清晰,但现在对它来说都是so easy~。

缺点/困难

  • 目前并不是所有浏览器都支持WebP,因此需要解决浏览器适配问题;
  • 对于已上线的项目,采用WebP需要替换大量图片,工作量太大(不确定后台程序是否能搞定)。

5、域名拆分:

以下为各浏览器请求并发数,数据来源于chorme搜索,珍爱生命,远离某……🙏:

浏览器 HTTP/1.1 HTTP/1.0
Chrome 6 6
火狐 6 6
Safari 4 4
IE11 6 6
IE9 10 10
…… …… ……

6、 减少http请求次数

本文由@IT·平头哥联盟-首席填坑官∙苏南 分享 - 四次挥手

结论:从上面的这个过程可以看出,每一次请求都这么复杂,减少http的请求次数是不是很有必要呢??答案是肯定的,我们会以以下几个维度来进行优化:

  • 合并 JS、CSS 文件;
  • 图片/图标 sprites 合并,或使用iconfont字体图标,或者SVG Sprites什么是Svg Sprites?
  • 资源按需加载,即当前页面用到什么,就加载什么,避免加载与当前页面无关的事情,这一点现在的React/Vue/Angular等MVVM框架,基于webpack编译打包工具,做的很好;
  • 前端数据的缓存(如:一个列表页,进入详情,再返回,这个用户的交互行为是很频繁的,可以对列表的数据进度一个缓存,不用每次返回都进行加载,比如5分钟更新一次。

7、 数据设置缓存,好累写不动了,http缓存的设置,之前的面试汇总👉如何设置http缓存?吧;
8、 站点服务端开启Gzip压缩,当然还可以了解一下Brotli 或 Zopfli ,据说 Brotli 比 Gzip 和 Deflate更有效,有兴趣的同学可以了解一下;
8、 避免重定向,尽量减少 iframe 使用,它会阻塞主页面的渲染;
9、 避免使用CSS Expression(css表达式)又称Dynamic properties(动态属性);
10、 合理使用dns-prefetch、prefetch、 preload、 defer、async:

总结:

文章分享计划:

最近一直在思考,如何有规化的分享工作中的积累,国庆这些天也一直看了很多大神写的博客,最后综合自身的能力及时间,决定先尝试写一个# 动画 #系列文章,动画可能主要包含(CSS/Canvas)两部分,欢迎大家持续关注!

  以上就是今天的分享,新手上路中,我会努力让自己变得更优秀、写出更好的文章,文章中有不对之处,烦请各位大神斧正。如果你觉得这篇文章对你有所帮助,请记得点赞哦~。

作者:苏南 - 首席填坑官

来源:@IT·平头哥联盟

链接:https://honeybadger8.github.io/blog/

交流群:912594095[资源获取/交流群]、386485473(前端) 、260282062(测试)

本文原创,著作权归作者所有。商业转载请联系@IT·平头哥联盟获得授权,非商业转载请注明原链接及出处。

上一篇 下一篇

猜你喜欢

热点阅读