预加载和懒加载

137 阅读1分钟

预加载

预加载: 提前加载资源会同源加载优化,同源加载优化就是相同的资源加载多次时只会加载1次是浏览器自带的功能,浏览器会将已经加载的资源放入临时缓存文件中,再次加载这个资源时就在临时缓存文件中取出再渲染资源到页面上。比如网页内部的资源是异步加载的且资源是必须要加载的。

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
		<script>
			//预加载
			var img1=new Image();
			//创建一个Image对象:var a=new Image();    定义Image对象的src: a.src=”xxx.gif”;    这样做就相当于给浏览器缓存了一张图片。
                        img1.src="https://img2.baidu.com/it/u=1814268193,3619863984&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1658422800&t=d974afe62dd1225c4faa14b1538bf7f5";
		</script>
		
	</head>
	<body>
		<img src="https://img2.baidu.com/it/u=1814268193,3619863984&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1658422800&t=d974afe62dd1225c4faa14b1538bf7f5">
		
		<img src="https://img2.baidu.com/it/u=1814268193,3619863984&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1658422800&t=d974afe62dd1225c4faa14b1538bf7f5">
		
		<img src="https://img2.baidu.com/it/u=1814268193,3619863984&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1658422800&t=d974afe62dd1225c4faa14b1538bf7f5">
         </body>        

懒加载

懒加载: 先不加载,等条件成立时再加载。比如百度页面的新闻加载,是随着页面滑动的一定位置再去加载。

加载:做网络请求,就是将资源编码请求过来。

	<body>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p id="p1">hello66666666666</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<p>hello</p>
		<script>
			window.onload=function(){
				document.onscroll=function(e){
					let top=window.pageYOffset||document.body.scrollTop||document.documentElement.scrollTop//body元素滚动条已经滚动了的距离
					let h=cHeight =window.innerHeight||document.body.clientHeight;
                                        //条件成立了滚动条滚到相应位置这一刻就做资源加载
					if(top>=(img2.offsetTop-h-100)){
						console.log(33333333333)
						img2.src=img2.dataset.src1
					}
				}
			}			
		</script>
		<img  id="img2" data-src1="https://img1.baidu.com/it/u=1966616150,2146512490&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1658422800&t=f99225a791b634226dcd5ee47c8b5f3f">
		
		
	</body>
		

滚动条滚到相应位置再做网络请求就是懒加载,先不加载,等条件成立时再加载。