我想了解CSS是如何在一个特定的环境评价:了解渲染封锁CSS
让我们假设我有我的<head>
标签以下内容:
<html><head>
...
<link href="reset.css" type="text/css" rel="stylesheet">
<link href="style.css" type="text/css" rel="stylesheet">
<link href="autocomplete.css" type="text/css" rel="stylesheet">
</head>
<body>
... html ...
<script type="text/javascript" src="/js/script.js"></script>
</body></html>
现在,让我们假设reset.css
和style.css
包含一些立即影响上述折叠内容或HTML中元素的规则。但是,autocomplete.css
只包含稍后由某些JavaScript使用的类。
现在,我们进一步假设浏览器已经下载了reset.css
和style.css
,但autocomplete.css
仍在等待处理。 我想知道如果浏览器会在页面结尾处遇到阻止脚本标记会发生什么情况?显然,它可以将HTML渲染为脚本标记,但是脚本的执行被丢失了autocomplete.css
?
请注意,脚本标记不是同步。
我读过: https://developers.google.com/web/fundamentals/performance/critical-rendering-path/analyzing-crp
还有它说,JavaScript的执行被阻塞,直到CSSOM是存在的。
现在: 1.即使autocomplete.css
尚未到达,页面是否会开始渲染?和 2.是否执行script.js
JavaScript直到autocomplete.css
在那里?
请注意,我指的是两种不同的东西:渲染和脚本执行。
阅读本。只是一个提示** [消除渲染阻塞CSS](https://varvy.com/pagespeed/render-blocking-css.html)** –
如果缺少'autocomplete.css',那么页面将会抛出一个无声的错误: **无法加载资源:net :: ERR_FILE_NOT_FOUND **。但一切都会继续加载,包括你的脚本。如果文件存在并且需要花费时间加载,那么您的页面将无法加载,因为您的css在头部,并且在加载页面的其余部分之前必须加载它。 –