用的是七牛云,当出现多个js加载慢的问题要怎么解决?

JavaScript07

用的是七牛云,当出现多个js加载慢的问题要怎么解决?,第1张

建议你观察下页面内资源的加载时间,同时在页面中打开多个js文件主要耗时为TTFB,主要耗时为「等待某个js加载渲染完成」+「等待dns解析时间」+「浏览器的pending策略」等。你在页面内同步加载了多个js资源,所以下载速度的不可控是正常的。

因为JS在执行的时候会影响到页面的DOM和样式等情况。浏览器在解析渲染HTML的时候,如果解析到需要下载文件的script标签,那么会停止解析接下来的HTML,然后下载外链JS文件并执行。减少 JavaScript 对性能的影响有以下几种方法:1、将所有的

同步加载、异步加载、延迟加载

一、同步加载

平常默认用的都是同步加载。如:<script src="http://y.com/script.js"></script>

同步模式又称阻塞模式,会阻止浏览器的后续处理,停止了后续的文件的解析,执行,如图像的渲染。流览器之所以会采用同步模式,是因为加载的js文件中有对dom的操作,重定向,输出document等默认行为,所以同步才是最安全的。通常会把要加载的js放到body结束标签之前,使得js可在页面最后加载,尽量减少阻塞页面的渲染。这样可以先让页面显示出来

二、异步加载

(function() {

var s = document.createElement('script')

s.type = 'text/javascript'

s.async = true

s.src = 'http://yourdomain.com/script.js'

var x = document.getElementsByTagName('script')[0]

x.parentNode.insertBefore(s, x)

})()

异步加载也叫非阻塞模式加载,浏览器在下载js的同时,同时还会执行后续的页面处理。

在script标签内,用js创建一个script元素并插入到document中,这种就是异步加载js文件了。

同步加载流程是瀑布模型,异步加载流程是并发模型。

三、延迟加载(lazy loading)

前面解决了异步加载(async loading)问题,再谈谈什么是延迟加载。

延迟加载:有些 js 代码并不是页面初始化的时候就立刻需要的,而稍后的某些情况才需要的。延迟加载就是一开始并不加载这些暂时不用的js,而是在需要的时候或稍后再通过js 的控制来异步加载。

也就是将 js 切分成许多模块,页面初始化时只加载需要立即执行的 js ,然后其它 js 的加载延迟到第一次需要用到的时候再加载。

特别是页面有大量不同的模块组成,很多可能暂时不用或根本就没用到。

就像图片的延迟加载,在图片出现在可视区域内时(在滚动条下拉)才加载显示图片

四、预加载

预加载是一种浏览器机制,使用浏览器空闲时间来预先下载/加载用户接下来很可能会浏览的页面/资源,当用户访问某个预加载的链接时,如果从缓存命中,页面就得以快速呈现。