1.页面有大量图片需要加载,如何优化?
针对图标:
1.精灵图/雪碧图, 一次性获取所有图标,减少Http请求
2.采用svg | 字体图标 | 内嵌小图片(base64编码)
针对业务图片:
1.懒加载。先加载首屏的图片,等滑动到新视图,再加载可视区域的图片。
做法:一开始所有图片采用占位图,占位图只需下载一次,然后监听滚动事件,滚动到指定区域时,加载指定区域的图片。
2.cdn加速。把图片放到cdn上加速,cdn保证和网站不同源,为了提高并发速度甚至可以把图片放到不同域的cdn中。
3.按分辨率加载。不同分辨率的设备加载不同分辨率的图片,如@1x @2x
4.针对大长图:考虑分割成多个图片加载。
*值得注意的误区:图片的src并不会阻塞后面html的解析。(JS的加载会阻塞DOM解析,是因为JS可能修改后面的DOM和CSSOM)
2.加载script阻塞
解决方法:
1.script标签上加上 defer属性
<script type="text/javascript" src="#" defer></script>
2.script标签上加上 async属性
<script type="text/javascript" src="#" async></script>
3.script标签放在body标签后
4.动态创建script标签,window.onload后插入script标签
*区分:async 是加载完成后立刻执行,defer 需要等待页面完成后执行。