前端经典面试题 | 性能优化之 懒加载

简介: 前端经典面试题 | 性能优化之 懒加载

一、回答点

在网页中延迟加载图片数据,提升用户体验,减少无用资源加载

二、深入回答

懒加载的概念

       懒加载又叫 延迟加载、按需加载,在网页中延迟加载图片数据,是一个比较好的网页性能优化的方式之一。在较长的网页中,如果图片数据很多美,所有的图片一下都被加载出来,而用户只能看到可视窗口的一部分图片数据,这样就浪费了性能。

懒加载的特点

       减少无用资源的加载:使用懒加载明显减少了服务器的压力,也减少了浏览器的负担。


      提升用户的体验:同时加载很多图片,用户需要等待的时间较长,会影响用户体验,使用了懒加载可以大大的提高用户体验。


     防止加载过多图片影响其他资源文件的加载:影响网站应用的正常使用

懒加载的实现原理

       图片的加载是由src引起的,当你对src进行赋值时,浏览器就会请求图片资源,根据它我们可以使用HTML5的 data-xxx 属性来存储图片路径,在需要加载图片的时候 将 data-xxx 中图片的路径赋值给src 就实现了图片的懒加载。


       data-xxx中的xxx可以是自定义的,这里使用data-coder来定义。


       懒加载的实现在于用户需要加载哪张图片,在浏览器中,可视区域内的资源就是需要的资源。当图片出现在可视区域内时,获取图片的真实地址并赋值给图片


       window.innerHeight =》 浏览器可视的高度


       document.body.scrollTop || document.documentElement.scrollTop =》 浏览器滚动过的距离


       imgs.offsetTop =》 是元素顶部距离文档顶部的高度(包括滚动条距离)


       图片加载条件: img。offsetTop < window.innerHeight + document.body.scrollTop


代码实现:

// 首先获取到 所有图片
let imgs = document.querySelectorAll('img');
function load() {
    let scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
    let heightT = window.innerHeight;
    for(let i = 0; i < imgs.length; i++) {
        if(imgs[i].offsetTop < scrollTop + heightT ){
            imgs[i].src = imgs[i].getAttribute('data-coder')
        }
    }
}
window.onscroll = load()

懒加载和预加载的区别

       懒加载和预加载都是提高网页性能的方式,他们的区别是  一个为提前加载,一个为慢加载甚至不加载。懒加载对服务器有一定的缓解压力作用,而预加载会增加服务器的压力。

相关文章
|
1月前
|
缓存 JavaScript 前端开发
前端vue的性能优化都有那些方式?
【4月更文挑战第8天】 Vue.js 性能优化技巧包括:路由懒加载,按需加载路由以加快页面加载;组件优化,如用`v-show`替换`v-if`,使用计算属性代替方法;虚拟滚动提升大数据列表性能;图片优化,如使用懒加载;减少不必要的重渲染,借助`v-once`或`shouldComponentUpdate`;以及考虑使用服务端渲染(SSR)提升首屏加载速度。注意平衡优化与代码复杂性之间的关系。
29 0
|
1月前
|
前端开发 JavaScript 网络协议
前端最常见的JS面试题大全
【4月更文挑战第3天】前端最常见的JS面试题大全
54 5
|
11天前
|
Web App开发 缓存 前端开发
【Flutter前端技术开发专栏】Flutter中的性能优化与内存管理
【4月更文挑战第30天】本文探讨了Flutter应用的性能优化和内存管理。关键点包括:减少布局重绘(使用`const`构造函数和最小化依赖),选择合适的动画实现,懒加载和按需加载以提升性能。同时,强调了避免内存泄漏和优化内存使用,利用Flutter提供的性能分析工具。实践案例展示了如何优化ListView,包括使用`ListView.builder`和缓存策略。通过这些方法,开发者可以提升应用的响应性、流畅性和稳定性。
【Flutter前端技术开发专栏】Flutter中的性能优化与内存管理
|
11天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
11天前
|
存储 缓存 监控
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化
【4月更文挑战第30天】本文探讨了Flutter中优化列表滚动性能的策略。建议使用`ListView.builder`以节省内存,避免一次性渲染所有列表项。为防止列表项重建,可使用`UniqueKey`或`ObjectKey`。缓存已渲染项、减少不必要的重绘和异步加载大数据集也是关键。此外,选择轻量级组件,如`StatelessWidget`,并利用Flutter DevTools监控性能以识别和解决瓶颈。持续测试和调整以提升用户体验。
【Flutter前端技术开发专栏】Flutter中的列表滚动性能优化
|
11天前
|
前端开发 数据处理
【Flutter 前端技术开发专栏】Flutter 中的滚动性能优化与无限列表实现
【4月更文挑战第30天】本文探讨了 Flutter 中的滚动性能优化和无限列表实现。关键点包括:1) 滚动性能直接影响用户满意度,优化可提升响应速度;2) 影响因素有布局复杂度、频繁重绘和数据处理;3) 优化措施包括懒加载、简化布局、减少不必要的重绘和高效处理数据;4) 无限列表通过监听滚动位置,动态加载新数据;5) 实现时注意加载策略、数据处理效率和内存管理。案例分析和总结强调了优化在实际开发中的重要性。
【Flutter 前端技术开发专栏】Flutter 中的滚动性能优化与无限列表实现
|
11天前
|
设计模式 缓存 前端开发
【Flutter前端技术开发专栏】Flutter开发最佳实践与性能优化指南
【4月更文挑战第30天】本文为Flutter开发者提供了最佳实践和性能优化指南。建议采用MVC、Provider/Repository和InheritedWidget设计模式,注重代码结构和状态管理。遵循最佳实践,如避免全局变量,智能使用Stateful和Stateless Widgets,以及利用`const`和`final`。性能优化要点包括减少渲染次数、优化图片资源、异步处理和使用Profile模式分析。通过测试确保应用质量与稳定性,打造高性能、高质
【Flutter前端技术开发专栏】Flutter开发最佳实践与性能优化指南
|
18天前
|
缓存 监控 前端开发
前端如何做性能优化?
【4月更文挑战第21天】前端性能优化涉及代码、图片、资源加载、渲染、网络等多个层面,包括压缩合并代码、利用缓存、压缩图片、使用CDN、减少DOM操作、启用HTTP/2等策略。其他方法还包括代码拆分、使用Web Workers和性能监控。优化过程应根据项目实际需求灵活调整,并注意平衡性能与代码可读性。
25 2
|
2月前
|
前端开发 JavaScript 数据库
探索前端框架的性能优化策略
本文将介绍一些前端开发中常见的性能优化策略,包括减少HTTP请求、使用CDN加速、代码压缩与合并、图片优化以及懒加载等技术手段,帮助开发者提高网页加载速度和用户体验。
|
2月前
|
存储 缓存 监控
2024年春招小红书前端实习面试题分享
春招已经拉开帷幕啦! 春招的拉开,意味着新一轮的求职大战已经打响,希望每位求职者都能充分准备,以最佳的状态迎接挑战,找到心仪的工作,开启职业生涯的新篇章。祝愿每位求职者都能收获满满,前程似锦!
80 3