javascript - 预加载谷歌字体

标签 javascript html css reactjs lighthouse

Light House 审核建议我预加载关键请求,特别是我在 React 应用程序中使用的两种谷歌字体。 Light House 成员建议使用: <link rel="preload" as="style" href="https://fonts.googleapis.com/css?family=Open+Sans|Roboto:700" crossorigin> <link rel="preconnect" href="https://fonts.gstatic.com/" crossorigin>

我知道它正在发出请求,因为我在瀑布中看到它并且我收到了这个控制台警告:

“资源 https://fonts.googleapis.com/css?family=Open+Sans|Roboto:700 是使用链接预加载预加载的,但在窗口加载事件后的几秒钟内未使用。请确保它具有适当的 as 值并且是有意预加载的。”

不幸的是,这两种字体不再显示在我的应用程序中。我是否需要在我的 CSS 中使用 @font-face 或类似的东西来定义它们?

最佳答案

预加载字体的正确方法是同时添加 preload 链接和 stylesheet。一个基于 MDN 的简化示例如下:

<head>
  <meta charset="utf-8">
  <title>Preloading fonts</title>

  <link rel="preload" href="https://fonts.googleapis.com/css?family=Roboto&display=swap" as="style">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto&display=swap">
</head>

<body>
</body>

在上面的例子中,preload链接会发送一个请求来获取字体,不管客户端是否安装了字体,然后使用stylesheet链接来正确加载和使用它。

preload 更像是一种告诉浏览器可能需要某个资源的方式,因此无论如何都会请求它,然后,如果您需要它或决定使用它,您可以.

更多信息

关于javascript - 预加载谷歌字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50824181/

相关文章:

javascript - 有没有纯 Javascript X/HTML 验证器?

Zapier 中的 Javascript : Split by "-" to multiple outputs

javascript - 重新加载时在输入 (HTML) 中随机化文本 (JS)

javascript - 如果已经选中其他复选框,如何自动取消选中带有 javascript 的复选框?

Android Webview HTML 固定元素溢出-x :hidden Not Working

html - 在不改变原始宽度的情况下将 div 放置在视口(viewport)之外。使用 Skrollr 插件。

javascript - 在查询内分配值并且它没有更新

javascript - 输入字段(类型 ="number")一旦其内容发生更改,就会丢失 angularjs 的双向 'BIND' 属性。

javascript - 谷歌可视化错误

css - 为列表设置导航栏