web新能优化五-图片的预加载

什么是预加载,以及预加载的优点是什么?

  • 图片等静态资源在使用之前的提前请求
  • 资源使用到时能从缓存中加载,提升用户体验
  • 页面展示的依赖关系维护

首先预加载第一种实现方式可以是这样子滴


 <img src="http://pic26.nipic.com/20121213/6168183_004444903000_2.jpg" class="image-item" style="display: none" /> 

第二种实现方式是

// 第二种方式就是使用Image对象提前进行缓存图片,会从缓存中读取下载好的图片资源
var image = new Image();
image.src = 'http://pic26.nipic.com/20121213/6168183_004444903000_2.jpg';

第三种实现方式可以使用XMLHttpRequset来实现

// 第三种方式就是使用XMLHttpRequrest对象,代码执行顺序如下
// 优点是可以掌握各个阶段的信息,便于业务的开发,但是缺点是存在跨域
var xmlhttprequest = new XMLHttpRequest();

xmlhttprequest.open("GET", "'http://image.baidu.com/mouse.jpg", true);

xmlhttprequest.send();

xmlhttprequest.onreadystatechange = callback;
xmlhttprequest.onprogress = progressCallback;

function callback() {
    if (xmlhttprequest.readyState == 4 && xmlhttprequest.status == 200) {
        var responseText = xml.responseText;

    } else {
        console.log("Request was unsuccessful: " + xmlhttprequest.status)
    }
}

function progressCallback(e) {
    e = e || event;
    if (e.lengthComputable) {
        console.log("Received " + e.loaded + " of " + e.total + " bytes");
    }
}

推荐使用第三方库来做前端预加载
preload.js来处理前端预加载资源的业务,提供的api也简单易用

// 使用preload.js库
// false决定着使用html标签的方式去加载图片,不使用的话就走XMLHttpRequest方式去加载图片
var queue = new createjs.LoadQueue(false);

queue.on("complete", handleComplete, this);

queue.loadManifest([
    { id: "myImage", src: 'http://pic26.nipic.com/20121213/6168183_004444903000_2.jpg' },
    { id: "myImage2", src: 'https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=1069058874,714751845&fm=27&gp=0.jpg' }
])

function handleComplete() {
    var image = queue.getResult("myImage");
    document.body.appendChild(image);
}

你可能感兴趣的:(个人实践,web性能优化)