拆分脚本/ css是否会产生更快的执行/绘制时间

时间:2016-02-05 13:23:13

标签: javascript html css performance load

我知道当浏览器下载远程脚本时,它会等待整个文件在执行之前完成下载(显然)。 将文件拆分为多个远程文件会增加加载时间,但也会允许一些重要的代码更快地执行。

内联脚本的加载/执行是否相同? 假设确实如此,那么拆分内联脚本会在所有加载时间内有这么小的增加,它不会引起注意,并且它会允许某些代码执行更快的结果。(赢得胜利)

实施例

<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>

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

1 个答案:

答案 0 :(得分:2)

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

内联脚本/ css块会像页面上的任何其他内容一样阻止渲染(因此,在加载任何其他可视元素之后,始终将它们放在底部),并且拆分它们将允许部分显示,直到页面的其余部分加载

也就是说,如果您在自己的javascript中进行了大量处理,那么您的脚本可能会导致用户明显延迟到您的网页,那么您最好不要将其设为内嵌脚本开始。最简单的标准解决方案是将其放入自己的js文件中,并从内联脚本异步加载它。