网络优化/性能优化

使用CDN,让用户访问最近的资源,减少来回传输时间 合并压缩CSS、js、图片、静态资源,服务器开启GZIP css放顶部,js放底部(css可以并行下载,而js加载之后会造成阻塞) 图片预加载和首屏图片之外的做懒加载 做HTTP缓存(添加Expires头和配置Etag)用户可以重复使用本地缓存,减少对服务器压力 大小超过 10KB 的 css/img 建议外联引用,以细化缓存粒度 小于 10k 的图片 base64 DNS 预解析 DNS-Prefetch 预连接 Preconnect

  • 代码层面优化

少用全局变量,减少作用域链查找,缓存DOM查找结果,避免使用with(with会创建自己的作用域,会增加作用域链长度);多个变量声明合并;减少DOM操作次数;尽量避免在HTML标签中写style属性

避免使用css3渐变阴影效果,尽量使用css3动画,开启硬件加速,不滥用float;避免使用CSS表达式;使用<link>来代替@import

  • 图片预加载原理

提前加载图片,当用户需要查看时可直接从本地缓存中渲染

var imgArr=["1.jpg","2.jpg"];
loadImage(imgArr,callback);
function loadImage(imgArr, callback) {
    var imgNum=imgArr.length,count=0;
    for(var i=0;i<imgNum;i++){
      var img = new Image(); //创建一个Image对象,实现图片的预下载
      img.src = imgArr[i];
      if (img.complete) { // 如果图片已经存在于浏览器缓存,直接调用回调函数
          if(count==imgNum){
          callback();// 直接返回,不用再处理onload事件
         }
 } count++; img.onload=function () { if(count==imgNum){ callback(); } } }//for循环结束}

results matching ""

    No results matching ""