http://dev.w3.org/html5/spec/Overview.html#attr-script-async
如我在评论中提到的那样,设置async=true、async=false或async=任何值都意味着相同的事情。它们都启用了异步行为。唯一使脚本非异步的方法是完全省略该属性。
http://dev.w3.org/html5/spec/Overview.html#boolean-attributes
在XHTML中,需要将属性及其值标注为属性,而HTML则不需要。我喜欢这个原则的一致性,因此我总是使用以下形式:
async="async"
这样我就可以将我的文档作为application/xhtml+xml提供服务。
如果您认为将文档作为text/html提供足够好,那么您也可以使用:
async
HTML WHATWG specification 包含以下解释:
对于经典脚本,如果存在async
属性,则经典脚本将在解析过程中并行获取并在可用时立即执行(可能在解析完成之前)。如果未出现async
属性但出现了defer
属性,则经典脚本将在并行获取后在页面解析完成时执行。如果两个属性都不存在,则脚本将立即获取和执行,阻止解析直到两者都完成。async
属性,则模块脚本及其所有依赖项将在解析过程中并行获取,并在可用时立即执行(可能在解析完成之前)。否则,模块脚本及其依赖项将在并行获取后在页面解析完成时执行。(defer
属性对模块脚本没有影响。)
这里有一个很好的插图。
注意:此属性仅适用于外部脚本(具有 src 属性的脚本),而不适用于内联脚本。
async=async
,只需使用async
即可。第二种技术是在适当的情况下使用 "async" 属性,这可以通过将解析工作推迟到浏览器 UI 线程空闲时完成,从而防止解析工作阻塞初始页面加载。
https://developers.google.com/speed/docs/best-practices/mobile#DeferParsingJS
我只需要足够的异步。
你可以尝试两种方法,然后测量页面速度的差异。例如crictime使用单一物质实现此功能。
async
。 - agentofuser