第四章 无阻塞加载脚本
阻塞:大部分浏览器在下载或执行<script>标签内容时不会下载其他内容。浏览器是按顺序执行的,但不一定要按顺序下载脚本。
对于外部脚本,如果浏览器缓存中有,就从缓存中读取,否则发送HTTP请求获取。
解决阻塞:
(1)把所有的<script>中的代码内嵌在HTML页面中,这种方法不推荐使用。
(2)XHR Eval、XHR注入、Script in Iframe(iframe是页面中开销最高的DoM元素),这两个的缺点:通过XHR获取的脚本必须部署在和主页面相同的域下
(3)Script DOM Element、Script Defer、document.write Script Tag
Script DOM Element:允许跨域获取脚本,代码如:
var domsr=document.createElement('script');
domsr.src='1.js';
document.getElementsByTagName('head')[0].appendChild(domsr);
Script Defer:脚本中不包含对document.wirte的调用,且当前页面中没有其它脚本依赖它时,使用这个属性是安全的,只有IE和新浏览器支持这个defer属性。代码:
document.write Script Tag:只有在IE中是并行加载的,代码:
document.write("<script type='text/javascript' src='1.js'><\/script>");
浏览器忙时的指示器:状态栏、进度条、标签页图标、光标、阻塞渲染(差的用户体验)、阻塞onload事件,使用XHR Eval、XHR注入不会触发浏览器的忙指示器,忙指示器是否触发是由技术和浏览器来共同决定的。浏览器忙指示器的目的是让用户知道页面下面运行。
如果下载脚本是并行的,浏览器执行脚本是最先到达的最先执行。并不是按排列顺序执行的,但是document.write Script Tag、script defer、Script DOM Element除外。
没有独立的最佳方案,真正的最佳方案取决于需求。
有六种使用结果:
(1)不同域、无序(2)不同域、保持顺序(3)同域、无序、无忙时指示器(4)同域、无序、有忙时指示器(5)同域、保持顺序、无忙时指示器(6)同域、保持顺序、有忙时指示器
广东湛江怎么做网站教程编辑网页用什么软件公关公司服务的特点商丘做网站优化90设计网怎么样莱芜十七中网站外呼电销系统劳动法24小时免费咨询微信公众平台功能开发主动营销的方式有哪些关于网站制作的论文专业公关公司社会化营销案例库什么是网络营销?请举几个例子说明岳阳博物馆网站外贸流程及详细介绍制作网页版权怎么修改大企业网站建设方案2023最建议买10款手机装修网土巴兔城建培训中心官网广东推广网络软件开发工具清单长沙多少例新型冠状病毒网络营销方式落后的表现南京家装公司有哪些品牌现在创业什么行业最好网络舆情监测分析平面广告设计行业oppo软件商店苹果版中信建设有限责任公司四川分公司电话