<head>
<script async></script>
</head>
<body>
<img />
<img />
<img />
</body>
头部只有一个脚本元素,具有异步属性和2秒延迟,执行时间为3秒。
但Chrome中的网页加载时间轴为:
当脚本执行时,它仍会阻止浏览器渲染过程吗?
但为什么呢?它不应该异步执行?
但是它不会阻止解析器:
答案 0 :(得分:3)
任何脚本的执行始终阻止在同一选项卡中解析,呈现和执行其他脚本。属性#!/bin/bash
set -m
sudo sleep 999 & # run sudo in backgroup
pid=$! # save the pid which is also the pgid
sleep 5
sudo kill -INT -$pid # kill the pgrp.
# Use sudo since we're killing root's processes
不会改变它。
async
唯一能做的就是告诉浏览器脚本应该获取(假设它是一个远程文件)而不阻止这些活动。
下载脚本后,脚本会在下一个可用机会(即当前脚本,如果有的话,完成正在运行)之后开始执行;新脚本当然不会中断正在运行的脚本。一旦发生这种情况,您的渲染就会被阻止因此,使用快速Web服务器,下载速度非常快,async
根本没有任何区别。
如果您不希望脚本暂停渲染,请使用async
属性而不是defer
。这将延迟脚本的执行,直到文档完全加载为止。
有关此here的详情。