在浏览器输入URL并回车后发生了什么
- www:服务器
- https::加密传输协议(http和TCP间加入了一层TSL或SSL)
- baidu.com:域名
- url:统一资源定位符,俗称网站,是IP地址的映射
- 加载:(主要优化的大方向)
- 减少http请求——精灵图、文件的合并
- 减小文件的大小——资源压缩、图片压缩、代码压缩
- CDN——第三方库,将大文件通过第三方进行处理,而本地只留下链接
- SSR服务端渲染——预渲染
- 懒加载
- 分包
- 减少DOM操作,避免回流,有操作量很大的DOM可以采用文档碎片
这些都不能称为性能优化,只能称得上是执行效率的问题,和性能毫无关系,真正的性能优化是:
- 页面加载时间——加载时间、用户体验
- 动画与操作性能——是否流畅无卡顿(如translate)
- 内存占用——内存占用过多、浏览器卡死
- 电量消耗
为什么提倡使用translate不用transform
跟回流有关系,translate使用后,元素脱离文档流,不会影响上下面的元素,若发生改变不用重新渲染页面,避免了回流
需要经常变化的元素首选translate性能体系
技术方案
原生js实现懒加载
```javascript let num = document.getElementsByTagName(“img”). length; //所有标签9个 let img = document.getElementsByTagName(“img”); // 记录已经被加载出来的图片的数量,防止重复加载 let n = 0; lazyLoad(); window.onscroll = lazyLoad;
function lazyLoad() { // 获取视口高度 let seeHeight = document.documentElement.clientHeight; // 滚动条 let scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 获取每张图片距离顶部的距离 for(let i = n; i < num; i++) { if(img[i].offsetTop < seeHight + scrollTop) { if(img[i].getAttibute(“src”) == “./img2/time.gif”) { img[i].src = img[i].getAttribute(“data-src”); } n = i + 1; } } } ```