我知道当浏览器下载远程脚本时,它会等待整个文件在执行之前完成下载(显然)。 将文件拆分为多个远程文件会增加加载时间,但也会允许一些重要的代码更快地执行。
内联脚本的加载/执行是否相同? 假设确实如此,那么拆分内联脚本会在所有加载时间内有这么小的增加,它不会引起注意,并且它会允许某些代码执行更快的结果。(赢得胜利)
<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>
如果这确实有效并且它是一个实用的解决方案,哪个块会更好地作为内联和哪些外部脚本?
答案 0 :(得分:2)
简短的回答是:理论上,是的,在实践中,如果您在拆分内联脚本时看到渲染性能提升,则很可能会遇到一些设计问题。
内联脚本/ css块会像页面上的任何其他内容一样阻止渲染(因此,在加载任何其他可视元素之后,始终将它们放在底部),并且拆分它们将允许部分显示,直到页面的其余部分加载
也就是说,如果您在自己的javascript中进行了大量处理,那么您的脚本可能会导致用户明显延迟到您的网页,那么您最好不要将其设为内嵌脚本开始。最简单的标准解决方案是将其放入自己的js文件中,并从内联脚本异步加载它。