问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何处理前端页面首次加载慢的问题

发布网友 发布时间:2022-04-27 04:29

我来回答

3个回答

懂视网 时间:2022-05-14 09:40

原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题,所以一直在改代码进行调试,今天白天一整天又在外面跑,回来已经傍晚了,刚吃完饭,就想着赶紧补上,这样很多不懂这方面具体实现的小伙伴们也能早点学习经验。

前端页面的用户体验对于一个网站来说是至关重要的,我们在访问一些图片量比较大的网站的时候,往往会有这样的感受:显示在我电脑屏幕可视区域的图片总是不能及时的刷出来,这就造成了对于一些没有什么耐心的用户而言,他们就不愿意多等下去,索性直接关闭了网站去看其他的网站,这就使得本网站的用户量的流失,这往往是一个网站最不愿意看到的情况,那么对于这样的情况而言,开发者们不断的努力,很快就想到了解决的方案,让在可视区域的图片立即加载进来,而让不在可视区域并且需要通过滚动条进行滚动显示的图片在图片滚动到可视区域内再显示出来,这就比一次性把所有的图片资源加载进来从而造成图片刷新较慢的用户体验好的多的多。

那么,图片延迟加载的技术具体如何实现呢?下面来做详细的介绍:

首先,定义图片为三列,一共有5行,具体代码如下:






里面用到的bootstrap的布局技术(当然,这不是重点),请看img标签中的src,一开始我们并没有给它具体的图片的资源路径,而是自己定义了一个属性 x-src,该属性的值是图片图片的资源路径,每一行的img都是如此,接下来,当页面载入的时候,我们使用jquery(当然,你想javascript原生的代码也可以,我这里只是为了省时间而已)来循环遍历每一个img,判断每一个图片是否在当前可视区域内,是则显示图片,否则稍后处理,这里需要知道三个数据:

注:因为我所写的是当图片的一半进入的浏览器的可视区域内才将这张图片进行加载,所以需要第三个数据,这个看个人的需求是什么, 如果你的需求是图片只要已进入可视区域内就加载,可直接忽略第三个数据!!!!

1:浏览器可视区域的高度

2:图片相对于文档的偏移量(这里只需要高度上的偏移量)

3:图片元素本身的高度

如果图片先对于文档的偏移量+图片元素本身的高度的一半 < 浏览器可视区域的高度,即表明图片已经有一半进入的可视区域了,那么我就应该要把这张图片加载进来了,可是img标签的src是为空的,x-src的值才是图片的资源路径,这个时候就需要用jquery将img 标签的x-src值传给src,从而将图片加载进来,具体实现代码如下:




具体的效果如下:




你可以在控制台看到,虽然我们有5行图片,每行有3列,但加载进来的图片只有第一列(图片高度有超出一半的img才会加载图片的资源进来),其他的都没有加载进来,这就使得图片的刷新会很快出现效果,那么接下来,用户需要看到更多的图片,这个时候需要进行滚动条往下滚动,去刷新更多的图片,那么这个时候我们除了上述的3个数据之外,还需要知道当前滚动条滚动的距离,如果:

图片先对于文档的偏移量+图片元素本身的高度的一半 < 浏览器可视区域的高度 + 当前滚动条滚动的距离,那么表明当前图片已经在可视区域内,并且图片有一半以上的高度是在可视区域内,那么将图片进行加载进来,具体代码如下:




具体效果如下:




在控制台你可以看到,随着滚动条的滚动,加载进来的图片由原来的三张变成了现在的六张,滚动条不断的往下滚动,图片就会不断的加载进来,从而得到更好的用户体验。

这就是图片延迟加载的具体实现,是不是觉得图片的炫酷,如果你想自己看下具体的实现效果,可以点击我的网址进行查看:

热心网友 时间:2022-05-14 06:48

这是一个ajax请求,几秒钟的延迟时间属于正常范围,它是异步运行的,对页面的加载速度不会造成直接影响。从图片中可看出,它的加载时间为138ms,不算长啊,后面的4.84s是它等待服务器返回数据的时间,在这段时间里,页面的其他元素是继续加载的,不会受影响。所以这个4.84s是不算在首页加载时间内的。就好比一个体育赛事直播的网页,它的比分一般都是通过ajax异步方式定时刷新的,而这个刷新的时间并不算在页面的加载时间内,因为这时候页面早就加载完毕了。
当然,这个4.84s的时间长短,是由多种因素造成的,比如电脑性能、网络状态等,但最大的影响因素通常都是后台数据库的查询速度,通过优化可以大大缩短这个查询时间。追问是这样子,页面能加载出来,但是里面的内容要等很长时间,也就是说是后端的查询速度的事是吧

追答是的。就好比360的开机时候的延迟加载技术,它把电脑开机后就立即运行的一些程序设为延迟加载,这样电脑的启动速度就加快了。等电脑启动完毕后,360再开始慢慢地启动那些程序。这虽然是一种投机取巧,但使用中确实会让人觉得电脑开机变快了。

热心网友 时间:2022-05-14 08:06

1、查看引用的js是否版本过低

2、优化图片质量大小
3、是否引用外部链接(并且外部链接是否失效导致数据无法找到)追问ok,我先找一下,js版本确实挺低的,用angular写的,完全就是自己硬拼凑的,以前古老的项目了

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天将雄师观后感600字 为什么喝酒会降血糖 牛栏山 52度浓香型白酒-购买最佳价格 全兴大曲 52度浓香型白酒-购买最佳价格 笔记本电脑怎么接音箱电脑如何连接外置音箱 笔记本电脑有音箱插孔吗笔记本电脑如何连接喇叭 冰箱压缩机过热启动5秒就停了 周长相等的正方形和圆,其面积比是多少 周长相等的正方形和圆面积比是多少 周长相等的正方形与圆形,边长与半径的比是( ),面积之比是( )。 要有... 测试:进入某个页面显示内容错误,如何定位是前端还是后端问题? 网页前端问题,, 问个关于前端页面设计问题。 关于网页前端开发的问题 演练环境上前端页面不能正常显示 我的手机号被别人用手机360卫士恶意标注为&quot;广告推销&quot;,怎么弄才能消除掉这个标注? 我的号码被金山手机卫士标记了,怎么能把标记取消 手机号码被百度手机卫士标注了怎么取消 手机号被百度卫士标记怎么办 百度手机卫士 手机号码被标记了怎么弄掉, 手机被百度卫士标记了怎么取消? 自制水果冰淇淋怎么做好吃 自制鲜果冰淇淋怎么做 怎样查询以前聊天记录 我收获了快乐 读书是幸福的,有福的人才读书。一`二年级的时候我不喜欢看书,平时做完老师布置的作业就 为人师者,到底该读哪些书 急求 中山2009—2010下学期七年级语文期末模拟测试题(一)答案,急急急! 七下语文 期末测试题 《做一个幸福的教师》读书报&#x0151; 初一上册语文期末测试题A卷答案!!!急~~~ 我家的厕所很臭,怎么办!!! 前端页面加载缓慢,有什么解决办法 饺子放冷冻一个月还可以吃吗 饺子冷藏一个月还能吃吗 学习web前端应该注意些什么问题 前端页面间数据传递的问题 web前端网页问题 前端页面问题? 活好的饺子馅在冰箱冷冻里放一个月会坏吗 如何解决前端页面使用reload函数,会出现一段时间空白的问题 饺子馅放冰箱冷冻十五天了这能吃吗 前端页面数据同步问题 饺子馅放冰箱一个星期还能吃吗 包的饺子放冰箱冰冻两个月还能吃吗 冷冻二十多天的羊肉饺子馅还能吃吗? 饺子馅放半个月还能吃吗 小孩可以吃蜂胶吗 别品牌的手机可以下vivo渠道服游戏吗? vivo游戏客服? vivo手机支持游戏模式的游戏有哪些?