当前的浏览器会在链接的样式表完全加载后渲染内容。这样可以避免内容闪烁,否则您总是会在规则未应用到样式表时短暂地看到页面。
由于样式表有10秒的延迟,因此其后面的页面呈现部分也会延迟10秒。
这不仅适用于样式表,还适用于没有使用异步属性加载的脚本。
编辑:针对Ryan Kinal的评论。浏览器有多个通行证。
一种解析html代码的方法,并开始下载找到的资源。
另一种通过“执行”资源并按顺序呈现html的方法。
因此,样式表和脚本不一定按顺序加载。唯一重要的是它们按照它们在html结构中出现的顺序应用/执行。
这就像一个建筑手册,需要一步一步地完成事情。您可以在建造之前阅读它。订购必要的物品。但是只能在收到下一步所需的物品时才能继续进行下一步。因此,如果您收到除第一部分以外的所有内容,则无法开始构建。
Google-Developer: 将CSS放在文档头部
[...] 浏览器会阻止渲染网页,直到所有外部样式表都已下载。因此,将外部样式表的引用以及内联样式块放在页面头部非常重要。通过确保样式表先被下载和解析,您可以让浏览器逐步地渲染页面。[...]
Google-Developer: 优化样式和脚本的顺序
[...] 因为JavaScript代码可以改变网页的内容和布局,所以浏览器会延迟渲染跟随在脚本标签后面的任何内容,直到该脚本被下载、解析和执行。然而,更重要的是对于往返时间,许多浏览器会阻止在脚本之后下载文档中引用的资源,直到这些脚本被下载并执行。另一方面,如果其他文件在JS文件被引用时已经在下载过程中,那么JS文件将与它们并行下载。 [...]
MDN: 为编写加载速度快的HTML页面提供的技巧: 最小化文件数量
查询引用文件的最后修改时间所花费的时间过长可能会延迟网页的初始显示,因为浏览器必须在渲染页面之前检查每个CSS或JavaScript文件的修改时间。
MDN: 优化您的页面以进行预解析
传统上,浏览器中的HTML解析器在主线程上运行,并且在
</script>
标签后阻塞,直到从网络中检索并执行脚本。Firefox 4及更高版本中的HTML解析器支持在主线程之外进行推测性解析。它在下载和执行脚本时提前解析。与Firefox 3.5和3.6一样,HTML解析器为它在流中找到的脚本、样式表和图像启动推测性加载。但是,在Firefox 4及更高版本中,HTML解析器还会推测性地运行HTML树构建算法。优点是,当推测成功时,无需重新解析已经扫描过脚本、样式表和图片的部分传入文件。缺点是,当推测失败时会有更多的工作丢失。