1.图片懒加载(用于图片过大,过多情况)
原理:先给loading图,再页面加载好后再把之前的图片赋值过去!
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<style>
img {
display: block;
margin-bottom: 50px;
width: 400px;
height: 400px;
}
</style>
</head>
<body>
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<img src="Go.png" data-src="./lifecycle.jpeg" alt="">
<script>
let num = document.getElementsByTagName('img').length;
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 < seeHeight + scrollTop) {
if (img[i].getAttribute("src") == "Go.png") {
img[i].src = img[i].getAttribute("data-src");
}
n = i + 1;
}
}
}
</script>
</body>
</html>
2.防抖(debounce)/节流(throttle)
减少用户对界面重复操作
之前文章有写,不细说
3.下拉数据懒加载,结合防抖
数据量大,而且都要渲染的情况下。
需求:展示2000条数据,做成列表。
解决方式:250为一组,下拉倒底,触发数据拼接(再加250条),结合防抖,防止数据重复拼接。
结果:引导用户下拉加载更多,已达到一页2000条数据!
4.组件懒加载(必须写的)
const NormalEditor = () => import("./components/pages/NormalEditor");
5.图片编码优化,尽量使用svg和字体图标
减少使用图片类型图标!
多使用svg和字体图标,这些不需要加载很久!!!
甚至使用base64也还可以。可以写js上,方便函数调用!!
6.使用gzip (真的好用)
打包使用gzip。同时服务器予许读取 .gzip文件。并且js分包!
加载速度提高200%!!!!真滴好用!!!