前端性能优化中图片资源的优化。html
1.图片进入可视区域以后请求图片资源;前端
2.对于电商等图片较多,页面很长的业务场景很适用;web
3.能够减小无效资源的加载;跨域
4.并发加载的资源过多会阻塞js的加载,影响网站的正常使用;缓存
懒加载的要点就是img标签src属性为空(占位图),给一个data属性,里面存放图片真实地址,在须要的时候,js动态的将这个地址赋予图片src属性。性能优化
以下所示:服务器
<img src="" class="image-item" lazyload="true" data-original="http://pic26.nipic.com/20121213/6168183_004444903000_2.jpg" />
相似上述代码所示,当须要时间,用js脚本控制图片的加载:并发
var viewHeight = document.documentElement.clientHeight // 可视区域的高度 function lazyload () { // 获取全部要进行懒加载的图片 var eles = document.querySelectorAll('img[data-original][lazyload]') //document.querySelectorAll(selector);返回与指定的选择器组(selector)匹配的文档中的元素列表; Array.prototype.forEach.call(eles, function (item, index) { var rect if (item.dataset.original === '') return rect = item.getBoundingClientRect() // 图片一进入可视区,动态加载 if (rect.bottom >= 0 && rect.top < viewHeight) { !function () { var img = new Image() img.src = item.dataset.original img.onload = function () { item.src = img.src } item.removeAttribute('data-original') item.removeAttribute('lazyload') }() } }) } // 首屏要人为的调用,不然刚进入页面不显示图片 lazyload() document.addEventListener('scroll', lazyload)
页面加载速度快、能够减轻服务器的压力、节约了流量,用户体验好前端性能
预加载的核心要点以下:性能
1.提早加载图片,用户须要查看时从缓存中渲染;
3.对图片画廊及图片占据很大比例的网站来讲十分有利,它保证了图片快速、无缝地发布,也可帮助用户在浏览你网站内容时得到更好的用户体验;
实现预加载主要有三个方法:
http://web.jobbole.com/86785/
1.html中img标签最初设置为display:none;
2.js脚本中使用image对象动态建立好图片;
3.使用XMLHttpRequest对象能够更加精细的控制预加载过程,缺点是没法跨域:
var xmlhttprequest = new XMLHttpRequest(); xmlhttprequest.open("GET",src,true);