前端图片的性能优化

https://www.cnblogs.com/vipzhou/p/6519552.html

1、实现图片的预加载

   (1)用background 这样只需加载一遍

  (2)

推迟预加载时间
function preloader(){
  if(document.getElementById){
    document.getElementById("preload").style.background='url(http://gfdhgf)'
  }
}

function addLoadEvent(func){
  var oldonload = window.onload;
  if(typeof window.onload != 'function'){}
}


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
  window.onload = function() {
  if (oldonload) {
    oldonload();
  }
  func();
  }
  }
}
addLoadEvent(preloader);

2、实现图片的懒加载

  原理:在滚动到底部的时候,把data-src里的值,取出来放到src里

  var aImg = document.querySelectorAll('img');
  var len = aImg.length;
  var n = 0;//存储图片加载到的位置,避免每次都从第一张图片开始遍历
  window.onscroll = function() {
  var seeHeight = document.documentElement.clientHeight;
  var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
  for (var i = n; i < len; i++) {
  if (aImg[i].offsetTop < seeHeight + scrollTop) {
  if (aImg[i].getAttribute('src') == '') {
  /*(function(i){ //立刻执行函数
    setTimeout(function (){
    aImg[i].src = aImg[i].getAttribute('guoyu-src');
   },1000);
  })(i);*/
  aImg[i].src = aImg[i].getAttribute('guoyu-src');
  }
  n = i + 1;
  console.log('n = ' + n);
  }
  }
};

3、先用压缩图面,后面用高清图片替换 

  $(function(){
    //一段正则,匹配所有_min.的图片src属性
    var test = /_min./
    //遍历所有的图片节点
    $("img").each(function(index,obj){
      if(test.test($(this).attr("src"))){
      var reSrc = $(this).attr("src").replace(test,".");
      $(this).attr("src",reSrc)
    }
   })
  })

4、话说  还有个什么base64 的  大图片不适合用  具体原理也没看

5、判断图片的后缀

https://www.cnblogs.com/ding0910/archive/2010/05/03/340695.html

原文地址:https://www.cnblogs.com/lmxxlm-123/p/8881403.html