Skip to main content

性能优化初探

为什么要性能优化

  • 57%的用户更在乎网页3秒内是否加载完成

  • 52%的在线用户认为网页打开速度影响到他们对网页的忠诚度

  • 每慢一秒造成页面PV降低11%,用户满意度也随之降低16%

  • 近半数移动用户因为在10秒内任未打开页面从而放弃

    参考

什么是PV

pv即页面浏览量或点击量,是衡量一个网站或网页用户访问量依据。具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个网页或某个网页多少次。PV是指页面刷新的次数,每一次页面刷新,就算做一次PV流量。度量方法就是浏览器发出了对网站服务器的请求(Request),网络服务器接到这个请求后,会将该请求对应的一个网页(Page)发送给浏览器,从而产生了一个PV。

性能优化学徒工

雅虎军规

Locale Dropdown

  • 浏览器正常情况下并发请求5个左右。
  • GZIP正常情况下100KB左右压缩后30KB
  • 使用CDN,CDN不会携带多余的cookie,使用多个CDN,解决浏览器对同一个域名的并发。
  • Http2多路复用Keep-Alives

参考雅虎军规

缓存策略

详见http缓存

网站协议

铜鼓哦升级http协议

HTTP2多路复用

浏览器请求//xx.cn/a.js--> 解析域名--> HTTP连接 --> 服务器处理文件 --> 返回数据 --> 浏览器解析、渲染文件

Locale Dropdown

Keep-Alive解决的核心问题就在此,一定时间内,同一域名多次请求数据,只建立一次HTTP请求连接,其他请求可复用第一次建立的连接通道,以达到提高请求效率的问题,一定时间是可配置的

HTTP1.1还是存在效率问题

  1. 串行的文件传输
  2. 连接数过多

HTTP/2对同一域名下所有请求都是基于流的,也就是说同一域名下不管访问多少文件,也只建立一路连接。同样Apache的最大连接数为 300,因为有了这个新特性,最大的并发就可以提升到300,比原来提升了60

小字为先

通过分析工具,"哪里大",对那一块进行压缩优化调优,尽量小,一般单个文件压缩后为30KB最佳。

渲染中优化

初识渲染过程

渲染阻塞问题

详见HTML资源加载顺序

页面指标

衡量网站性能的各种指标,详见性能指标

插件分析

公国Chrome插件,我们可以很轻松的分析网站性能,根据它建议作出对应的优化Chrome性能分析工具

白屏原因

Locale Dropdown

主要分为

  • css、js文件加载阻塞
  • js文件解析、运行
  • dom生成
  • cssom生成

优化调试

  • 骨架屏
  • 组件预加载
  • 配合PWA缓存

优化技巧

预渲染

如果觉得SSR或者同构方案成本太大,可以考虑使用预渲染,使用比较简单react-snap

windowing

在遇到大量的列表渲染时,可以使用窗口化技术,在一定的区域内只显示一定的DOM元素,提高列表性能,比较成熟的有React-virtualized,这里推荐使用react-window,配合Autosize

使用骨架屏

骨架屏可以理解为是当数据还未加载进来前,页面空白,使用骨架屏进行预先的占位,使得加载过程主观上变得流畅,这里推荐使用react-placeholder,如使用ant-design或者ant-design-pro表单库自身有或者支持骨架屏组件或结构。

总结

使用如上优化技巧,足以提高页面性能。