async和DOM Script文件加载比较

 2025-01-15  阅读 440  评论 8  点赞 375

摘要:目前我用demo.js作为执行文件操作.代码: var now = function() { return +(new date()); } var t_s = now(); while(now() - t_s < 2000) { } 用sleep.php作为请求文件操作。代码: 1. 一般script标签加载 在浏览器加载情况: 图1-1. 下载阻塞domready 图1-2. 执行阻塞domread

目前我用demo.js作为执行文件操作.代码:

async和DOM Script文件加载比较

var now = function() { return +(new date()); }
var t_s = now();
while(now() - t_s < 2000) { }

用sleep.php作为请求文件操作。代码:


<?php
  sleep(3);
  echo 'var bb';
?>

1. 一般script标签加载


<script src="demo.js"></script>
<script src="sleep.php"></script>

在浏览器加载情况: 图1-1. 下载阻塞domready 图1-2. 执行阻塞domready


图1-1. 下载阻塞domready


图1-2. 执行阻塞domready

2. async属性

async是html5中新增的属性,它的作用是能够异步下载脚本文件,不阻塞domready。

每一个async属性的脚本都在它下载结束之后立刻执行,同时会在window的load事件之前执行。所以就有可能出现脚本执行顺序被打乱的情况

支持async浏览器: firefox 3.6+, ie 10+, chrome 2+, safari 5+, ios 5+, android 3+


<script src="demo.js" async></script>
<script src="sleep.php" async></script>  

在浏览器中加载的情况:


图2-1 异步下载 不阻塞domready 阻塞load事件


图2-2 执行阻塞load事件


图2-3 ie9不支持async属性下载阻塞domready

3. dom script动态加载

文档对象模型(dom)允许您使用 javascript 动态创建 html 的几乎全部文档内容。 script元素与页面其他元素一样,可以非常容易地通过标准 dom 函数创建:


var loadscript = function(url) {
 var s = document.createelement('script');
 s.type = 'text/javascript';
 s.async = 'true';
 s.src = url;
 document.getelementsbytagname('head')[0].appendchild(s); 
}
// 加载js文件脚本
loadscript('sleep.php');
loadscript('demo.js');

在浏览器中加载的情况:


图3-1 下载阻塞load事件


图3-2 执行阻塞load事件


图3-3 ie9不阻塞load事件

小结

async和script动态加载在现代浏览器中加载的情况是一致的。前者使用简单,后在兼容性方面更好。 异步加载文件还有很多方法,ajax(会受到同源限制)、iframe、img…


标签:phpphp教程

评论列表:

  •   weihang233
     发布于 3天前回复该评论
  • 写的很不错,学到了!
显示更多评论

发表评论:

管理员

承接各种程序开发,外贸网站代运营,外贸网站建设等项目
  • 内容2460
  • 积分67666
  • 金币86666

Copyright © 2024 LS'Blog-保定PHP程序员老宋个人博客 Inc. 保留所有权利。 Powered by LS'blog 3.0.3

页面耗时0.0275秒, 内存占用1.94 MB, 访问数据库30次

冀ICP备19034377号