Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟、异步和PageSpeed细节_Javascript_Jquery_Html_Asynchronous - Fatal编程技术网

Javascript 延迟、异步和PageSpeed细节

Javascript 延迟、异步和PageSpeed细节,javascript,jquery,html,asynchronous,Javascript,Jquery,Html,Asynchronous,我尝试使用PageSpeed Insights的建议来优化页面速度负载,特别是延迟的JavaScripts,以便不阻塞要呈现的页面内容 因此,HTML5似乎引入了一个非常酷的特性,async属性,允许以“混乱”模式异步加载脚本。还有另一个属性,deferone,它也以异步方式加载它们,但以“有序”模式加载(正如我从中理解的) 所以,我的结论是 始终使用(对于每个)延迟属性 如果脚本不是“负载关键型”(如jQuery或jQuery ui),则可以使用async属性 这是正确的结论吗 附言 补充问题

我尝试使用PageSpeed Insights的建议来优化页面速度负载,特别是延迟的JavaScripts,以便不阻塞要呈现的页面内容

因此,HTML5似乎引入了一个非常酷的特性,
async
属性,允许以“混乱”模式异步加载脚本。还有另一个属性,
defer
one,它也以异步方式加载它们,但以“有序”模式加载(正如我从中理解的)

所以,我的结论是

  • 始终使用(对于每个
    )延迟
    属性
    
  • 如果脚本不是“负载关键型”(如jQuery或jQuery ui),则可以使用
    async
    属性
  • 这是正确的结论吗

    附言

    补充问题:
    在文档末尾添加脚本是否会自动“取消阻止”文档的呈现?正如我所理解的,有些脚本会阻止渲染,但它们在文档中的位置没有差异(在
    中或在
    之前)

    一,。始终使用(对于每个
    )延迟属性

    您应该只延迟可以延迟的脚本。在某些情况下,您可能需要保证执行顺序,或者依赖必须内联执行的功能。例如,调用
    document.write
    的脚本不能延迟

    二,。如果脚本不是“负载关键型”(如jQuery或jQuery ui),则可以使用
    async
    属性


    “load critical”没有任何特定的含义,因此这是一个糟糕的措辞选择
    async
    应该用于可以以任何顺序执行并且不依赖于其他脚本的脚本。

    为什么jQuery不是“负载关键型”的,如果您使用
    $
    并且它没有加载,它对我来说似乎相当关键?负载关键型,比如jQuery:)@serhio我把它理解为“不负载关键型,比如jQuery”哦,好的,那是误读了吗?为什么不在
    之前按正确的顺序添加脚本,问题就解决了?当脚本被下载时,可以使用Defer来阻止页面加载,这是正确的方法。就我个人而言,我认为您应该只对已经加载的页面添加功能的脚本使用async,而不要在其他脚本需要运行的脚本上使用async。还请注意,并不是每个浏览器都支持此功能。据我所知,“延迟”保证了“不同脚本之间”的执行顺序。。。我同意,如果它是“显式内联”脚本,则不应使用延迟。。。但有时很难预先知道…@serhio,我所说的“保证执行顺序”是指脚本可以在DOM完成加载之前依赖于DOM的状态。即使其他脚本以相同的顺序执行,DOM也会由于延迟而处于不同的状态。延迟脚本保证以它们在页面中出现的顺序执行。该执行在解析完成后开始,但在文档的DOMContentLoaded事件之前。幸运的是,有相当多的脚本使用document.write(至少在我的项目中)。但是jQuery,我可以和defer一起使用吗?