gpt4 book ai didi

javascript - 如何防止 CSS 渲染阻塞我的网站?

转载 作者:太空狗 更新时间:2023-10-29 13:22:13 25 4
gpt4 key购买 nike

我正在尝试优化我的移动网页的加载速度,为此我正在使用以下网站:

该网站评估我的来源并告诉我可以改进的地方。在我的网站上,我下载了一种字体:

<link href="//fonts.googleapis.com/css?family=Open+Sans:400,700" rel="stylesheet">

显然这会阻止我的页面呈现。现在,如果这是 JavaScript,我可以在标记中使用 async 词,它会解决问题,但这不是我正在加载的 javascript 文件!

有什么方法可以防止此资源阻塞我的浏览器并强制它等待下载?

最佳答案

你可以用 JavaScript 做到这一点:

<script>
(function() {
var link = document.createElement('link');
link.rel = "stylesheet";
link.href = "//fonts.googleapis.com/css?family=Open+Sans:400,700";
document.querySelector("head").appendChild(link);
})();
</script>

字体将与主渲染带外加载。当然,这意味着当字体完成加载时会有视觉变化……如果用户禁用了 JavaScript,则根本不会加载字体。


或者,正如 dandavis 指出的那样,您可以只使用 style body 末尾的元素, 就在收盘前 </body>标签:

<style>
@import "//fonts.googleapis.com/css?family=Open+Sans:400,700"
</style>

现在这是有效的 HTML(从 HTML 5.2 的 20170808 草案开始),但如果你放置 style,我从来没有遇到过关心它的浏览器。在body甚至在它生效之前。

与使用 JavaScript 相比,这样做的优势在于:

  1. 理论上,浏览器的预取扫描器可能找到style元素并提前开始下载(尽管如果将 JavaScript 放在 head 中这不太可能),以及

  2. 即使用户禁用了 JavaScript,它也能正常工作。

或者,您可以移动您的 link元素到 body 的末尾,但目前,这是无效的,并且 scoped属性(还?)似乎不适用。 (为什么让它适用于 style 而不是 link[rel=stylesheet] ?我不知道,也许这只是还没有到达那里的问题......)

关于javascript - 如何防止 CSS 渲染阻塞我的网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com