【发布时间】:2017-07-23 16:43:57
【问题描述】:
我正在尝试了解如何在特定设置中评估 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 渲染到 script 标签,但是缺少的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 存在?
注意,我指的是两个不同的东西:渲染和脚本执行。
【问题讨论】:
-
阅读本文。只是一个提示Eliminate render blocking css
-
如果
autocomplete.css缺失,则页面将抛出静默错误:加载资源失败:net::ERR_FILE_NOT_FOUND。但是一切都会继续加载,包括你的脚本。如果文件存在并且加载需要时间,那么您的页面将不会加载,因为您的 css 在头部,并且必须在加载页面的其余部分之前加载它。
标签: html css web-performance