<img />,<style>这些资源是并行请求与加载。

<script>脚本是同步请求与加载,阻塞加载。加载完成并执行后再继续解析HTML。

动态<script>是异步加载,就是说可以同时加载其他资源。

关于<script>的执行,分为立即执行和延迟执行。

对于浏览器来说,不管是<style>, <img />, <script>都是一视同仁,都是并行请求多个资源文件并加载,而不是一次只请求一个资源并加载。

只不过最大连接数有限制, 为6个或2个,并行加载6个资源。

但是遇到<script>会有特殊,即阻塞加载其他资源,比如<img/>等。

<script>加载与执行两个阶段,加载是阻塞其他资源的加载,执行也会阻塞。

执行是肯定会阻塞,这个没有什么异步执行,只有延迟执行和立即执行。

加载是并行加载,但是<script>特殊,故分为同步和异步加载。


HTML解析过程中,遇到<style>, <img/>, <script>会去并行加载外部资源。

同步加载(阻塞模式)但是遇到<script>时,会阻止浏览器的后续处理,停止后续的HTLM的解析,因此阻塞后续页面的处理,比如<img/>, <script>, <style>等资源的加载,以及HTML的渲染,和代码的执行。

异步加载(非阻塞),下载js的同时,还会继续进行后续页面的处理

js 之所以要同步执行,是因为 js 中可能有输出 document 内容、修改dom、重定向等行为,所以默认同步执行才是安全的。

<script>的阻塞不仅仅是资源文件的加载,而是HTML的解析和渲染,导致了不能加载包含的资源文件。

执行JS必然会阻塞其他一切资源的加载,但是异步加载不会阻塞资源的加载。

但是加载完之后是立即执行还是延迟执行这个可以通过defer来指定。

async异步加载,立即执行。

defer异步加载,延迟执行。

最新文章

  1. Redis命令拾遗四(集合类型)—包含简单搜索筛选商品设计实例。
  2. Node.js学习笔记(一)
  3. Linux常用命令学习4---(挂载命令mount umount、用户登陆查看和用户交互命令 w who last lastlog)
  4. DBCP连接池配置参数说明
  5. [转]一篇很全面的freemarker教程
  6. Http概述(一)
  7. spring mvc 配置对静态资源的访问
  8. JQ 无刷新评论
  9. 大数据平台搭建-hadoop/hbase集群的搭建
  10. ShoneSharp语言(S#)的设计和使用介绍系列(4)— 入门概述
  11. 机器学习之支持向量机(二):SMO算法
  12. [JetBrains注册] 利用教育邮箱注册pycharm,idea等产品教程。
  13. User Profile Service服务未能登录,无法登录
  14. SpringBoot注册Windows服务和启动报错的原因
  15. linux下maven的安装
  16. 深入理解JDBC的超时设置
  17. ngnix 500错误原因分析
  18. Selenium基础知识(六)下拉列表定位
  19. openwrt编译e2fsprogs-1.43时报错misc/create_inode.c:399:18: error: conflicting types for &#39;copy_file_range&#39;
  20. 牛客网 PAT 算法历年真题 1003: 数素数 (20)

热门文章

  1. ASP.NET MVC4学习笔记路由系统实现
  2. PHP JS HTML ASP页面跳转代码 延时跳转代码
  3. IE PNG格式的图片不现实的的解决方法
  4. 2.python的变量与赋值
  5. OC编写使用调试器
  6. NOJ1012-进制转换
  7. 转 在SQL Server中创建用户角色及授权(使用SQL语句)
  8. C#语法功能结构
  9. iOS9新系统下APP Store 应用上传新指南
  10. 制作OpenStack用的RHEL7系统镜像