为什么把scripts放在文档的尾部可以加快页面加载速度?
bootstrap的模板页view-source: http://v3.bootcss.com/examples/starter-template/ 中把bootstrap核心的js放在了文档的尾部,并没有放在head里面,说是会加快加载速度,这是为啥?
雪风·帕尼托妮
10 years, 3 months ago
Answers
我认为原因主要有两点。
浏览器发出请求,得到响应后,会解析
HTML
并识别出更多的资源(比如样式表、脚本、图片等),然后浏览器开始获取这些资源,并尽快开始渲染页面。
1、在浏览器获取更多资源的时候:HTTP规范推荐浏览器每次从同一个域名中最多只能同时下载两个文件(这大概也是很多网站把图片或者脚本单独存放在别的域名下的原因),很多现代浏览器可以同时下载更多的资源。但是尽管如此,当浏览器在下载脚本期间,不会下载其他任何文件,即使是来自不同域名的文件,所有其他资源都要等到脚本加载完毕后才能下载。当下载外链的脚本时,请求的时间、网络延迟、带宽限制都会影响速度。
2、在浏览器渲染页面的时候:如果页面中外链了
CSS
或脚本文件,浏览器会等这些文件加载和解析(如果是
javascript
代码,则还需要执行)完再渲染页面,也就是页面的渲染会被阻塞。而页面暂停渲染在用户看来就是卡顿。
另外,虽然样式表也会导致页面缓慢,但是它只需要加载并解析,而不需要执行,并且让页面内容在渲染时直接展现最终的样式也是大家认为比较友好的方式,所以一般会把样式表放在页面的头部,而把
javascript
放在
</body>
之前。
在
github
上有一个可以异步加载样式表的脚本也可以参考和使用:
https://github.com/filamentgroup/loadCSS
dorayun
answered 10 years, 3 months ago