Closed CruxF closed 6 years ago
原则: 多使用内存、缓存或者其他方法;减少CPU计算和网络。
加载资源优化:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <link href="https://cdn.bootcss.bom/bootstrap/..." rel="stylesheet" /> <script src="https://cdn.bootcss.com/zepto/..."></script> </head> <body> </body> </html>
渲染优化:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <!--事先使用一个小图片替换真正要显示的图片,等真正的图片完全加载后再替换小图片--> <img id="img1" src="small.jpg" data-realsrc="readlly.jpg" /> <script> var img1 = document.getElementById('img1'); img1.src = img1.getAttribute('data-realsrc'); </script> </body> </html>
//未缓存DOM查询 var i; for(i=0;i<document.getElementsByTagName('p').length;i++){ //执行代码 }
//缓存了DOM查询 var i; var pList = document.getElementsByTagName('p'); for(i=0;i<pList.length;i++){ //执行代码 }
- 4、减少DOM操作,多个操作尽量合并在一起执行; ```js var listNode = document.getElementById('list'); //要插入10个li标签 var frag = document.createDocumentFragment(); var x,li; for(x=0;x<10;x++){ li = document.createElement('li'); li.innerHTML = 'List item'+x; frag.appendChild(li); } listNode.appendChild(frag);
//让事件延迟执行 var textar = document.getElementById('text') var timeoutId; textar.addEventListener('keyup',function(){ if(timeoutId){ clearTimeout(timeoutId); } timeoutId = setTimeout(function(){ //触发change事件 },100) })
window.addEventListener('load',function(){ //页面的全部资源加载完才会执行,包括图片、视频等 })
document.addEventListener('DOMContentLoaded',function(){ //DOM渲染完即可执行,此时图片、视频还可能没有加载完 })
在前端方面性能有哪些优化
原则: 多使用内存、缓存或者其他方法;减少CPU计算和网络。
加载资源优化:
渲染优化:
//缓存了DOM查询 var i; var pList = document.getElementsByTagName('p'); for(i=0;i<pList.length;i++){ //执行代码 }
document.addEventListener('DOMContentLoaded',function(){ //DOM渲染完即可执行,此时图片、视频还可能没有加载完 })