前端性能优化几乎成为当今大厂前端面试必问的问题,前端性能直接影响了用户的体验,针对于前端性能问题,一直是一个热议的话题,解决方案多而庞杂,以下是我个人的一些认识与总结。
前端性能优化的目的
1.从用户角度而言:优化能够让页面加载得更快、对用户的操作响应的更及时,能够给用户提供更为良好的体验。2.从服务商角度而言:优化能够减少页面请求数、或者减小请求所占带宽,能够节省可观的资源。
思路
web类型应用的优化方式有很多,但是大体分两类加载层面和执行层面,
①加载层面可以让网络通信更快
②执行层面可以让数据处理更快
让网络通信更快
1.CND服务器商(内容分发网络)全局负载均衡和缓存系统
①全局负载均衡的主要职责是在用户上网时找到最近或最快的节点,智能调度(距离和负载情况)
②缓存系统(命中率,回源率),缓存内容主要从主服务器拿过来,请求时缓存服务器中有需要的数据叫命中,请求时缓存服务器中没有需要的数据,去主服务器拿称为回源,命中率越高越好,回源率越低越好
2.资源整合发请求前需要建立连接,将资源整合可以减少请求次数:雪碧图,js代码整合,css代码整合等
3.域名分片(多域名)因为浏览器对一个域名最多并发6-8个请求,后面的请求需要等待前面的请求,如果请求很多的话配置域名分片的能够显著提升页面响应速度。
4.浏览器缓存
强缓存:-cache-control:max-age=服务器返回之后开始计时,秒内请求使用缓存,-expires:***具体时间点前再次请求使用缓存协商缓存:-last-modified-if-modified-since-etag-if-none-math...根据标识返回,告诉客户端是否使用缓存,一些请求并非实质性的通信而是与服务器确认是否缓存,减少通信消耗5.数据传输
①数据压缩:
gzip算法(兼容性好,服务器可设置)
br算法(压缩算法效率提升20%左右,兼容性差)
②代码压缩:css代码js代码压缩③静态资源:字体图标代替图片,去除元数据(例如照片的创建日期之类的),缩小尺寸分辨率,使用jpg或者webp格式④头与报文:减少不必要的头,减少cookie数据量6.通信协议层面-