实现图片加载速度优化的办法
一. 使用base64加载
- 在网页中将图片转成base64编码
- 在html的img标签中使用
<img src="data:image/png;base64,******"/>
<div style="background-image:url("data:image/png;base64,******")"></div
二. 图片预加载
<body>
<img src="" alt="" id="pic"/>
//存放图片路径的地址
<script>
var arr = [
'../picture/1.jpg',
'../picture/2.jpg',
'../picture/3.jpg',
];
var imgs =[]
preLoadImg(arr);
//图片预加载方法
function preLoadImg(pars){
for(let i=0;i<arr.length;i++){
imgs[i] = new Image();
imgs[i].src = arr[i];
}
}
// 5s之后显示出该图片
setInterval(function(){
var pic = document.querySelector('#pic');
pic.src = '../picture/1.jpg'
},5000);
</script>
三. 使用Ajax实现预加载
使用Ajax实现图片预加载的方法。该方法利用DOM,不仅仅预加载图片,还会预加载CSS、JavaScript等相关的东西。使用Ajax,比直接使用JavaScript,优越之处在于JavaScript和CSS的加载不会影响到当前页面。该方法简洁、高效。
window.onload = function() {
setTimeout(function() {
// XHR to request a JS and a CSS
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain.tld/preload.js');
xhr.send('');
xhr = new XMLHttpRequest();
xhr.open('GET', 'http://domain.tld/preload.css');
xhr.send('');
// preload image
new Image().src = "http://domain.tld/preload.png";
}, 1000);
};
上面代码预加载了“preload.JS”、“preload.css”和“preload.png”。1000毫秒的超时是为了防止脚本挂起,而导致正常页面出现功能问题。
下面,我们看看如何用JavaScript来实现该加载过程:
window.onload = function() {
setTimeout(function() {
// reference to <head>
var head = document.getElementsByTagName('head')[0];
// a new CSS
var css = document.createElement('link');
css.type = "text/css";
css.rel = "stylesheet";
css.href = "http://domain.tld/preload.css";
// a new JS
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "http://domain.tld/preload.js";
// preload JS and CSS
head.appendChild(css);
head.appendChild(js);
// preload image
new Image().src = "http://domain.tld/preload.png";
}, 1000);
};