拆分 scripts/css 会产生更快的 execution/paint 时间吗

Does splitting scripts/css produce a faster execution/paint time

我知道,当浏览器下载远程脚本时,它会等到整个文件下载完成后再执行(很明显)。 将文件拆分为多个远程文件会增加加载时间,但也会让一些重要代码更快地执行。

Load/execution 对内联脚本是否同样有效? 假设它确实如此,那么拆分内联脚本会在所有加载时间中增加如此小的增加,这不会引起注意,并且它会允许一些代码执行更快的结果。(win win)

例子

<script>
    /* 
        Critical JS Block (Any Initial visual Dom Manipulation or loading critical assets)
    */
     function loadCSS(){};  //https://github.com/filamentgroup/loadCSS
     document.getElementbyId('textbox1').value(localStorage.textbox1);
</script>
<script>
     /* 
       Non Critical JS Block
        ui event listeners
        buttons, menus, tabs, etc
    */
</script>

<script>
    /* 
        lazy loading / pre-loading assets 
    */
</script>
</body>

这对内联 <scripts> 和内联 <style> 有效吗?

<style>
    body{display:none;}
    /* 
        Critical CSS Block
    */ 
    body{display:block;}
</style>
</head>
<body>
...
<style>

    /* 
        Non Critical CSS Block
    */ 

</style>
</body>

如果这确实有效并且是一个实用的解决方案,哪些块作为内联更好,哪些外部脚本更好?

简短的回答是:理论上是的,在实践中,如果您在拆分内联脚本时看到渲染性能有所提高,则很可能存在一些设计问题。

内联 scripts/css 块像页面上的其他任何内容一样阻止呈现(因此,始终将它们放在底部,在加载任何其他视觉元素之后),拆分它们将允许部分显示,直到其余部分页面加载次数。

就是说,如果您在 javascript 中进行了大量处理,以至于您的脚本很可能会导致页面出现用户可见的延迟,那么您最好还是不要这样做一个内联脚本开始。最简单的标准解决方案是将其放入自己的js文件中,并从内联脚本中异步加载。