【问题标题】:Lighthouse "Ensure text remains visible during webfont load " for local files本地文件的 Lighthouse“确保在 webfont 加载期间文本保持可见”
【发布时间】:2020-10-05 18:55:24
【问题描述】:

我有 3 个文件被灯塔指出。

这些字体文件位于并托管在我们的服务器中,这也是它在 head 部分中的加载方式。

<link rel="preload" href="/etc.clientlibs/farmers/clientlibs/clientlib-base/resources/fonts/SlatePro-Bk.woff" as="font" type="font/woff" crossorigin="anonymous"/>
<link rel="preload" href="/etc.clientlibs/farmers/clientlibs/clientlib-libraries/resources/fonts/fontawesome-webfont.woff2" as="font" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" href ="/etc.clientlibs/farmers/clientlibs/clientlib-base/resources/fonts/SlatePro-Medium.woff"  as="font" type="font/woff" crossorigin="anonymous"/>

我添加了&amp;display=swap,但它破坏了网址,并且灯塔无法识别该网址

<link rel="preload" href="/etc.clientlibs/farmers/clientlibs/clientlib-base/resources/fonts/SlatePro-Bk.woff&display=swap" as="font" type="font/woff" crossorigin="anonymous"/>
<link rel="preload" href="/etc.clientlibs/farmers/clientlibs/clientlib-libraries/resources/fonts/fontawesome-webfont.woff2&display=swap" as="font" type="font/woff2" crossorigin="anonymous"/>
<link rel="preload" href ="/etc.clientlibs/farmers/clientlibs/clientlib-base/resources/fonts/SlatePro-Medium.woff&display=swap"  as="font" type="font/woff" crossorigin="anonymous"/>

如何确保在这 3 个本地文件的 Webfont 加载期间文本保持可见。 添加 &display=swap 时我也得到 404 那些网址

【问题讨论】:

    标签: fonts seo webfonts lighthouse


    【解决方案1】:

    您需要使用font-display: swap; 来启用字体交换。

    这告诉浏览器在等待字体时不要阻止渲染(好吧,它给了它一个很短的时间来加载字体,如果它没有及时收到它,将使用一个后备并在什么时候换掉它字体可用。)。

    您还应该内联这个 CSS,因为它是 critical CSS

    &amp;display=swap 部分是 Google CDN 参数,它不是浏览器内置的,因此需要删除。此外,由于您是从本地服务的,因此您不需要crossorigin="anonymous"

    您还需要考虑woff2 format is not supported in Internet Explorer,因此您需要为您的字体真棒字体提供后备。

    为清楚起见

    您需要使用@font 定义字体并添加font-display: swap 属性。

    @font-face {
      font-family: 'SlatePro-Bk';
      font-style: normal;
      font-weight: 400;
      font-display: swap;
      src: url(../etc.clientlibs/farmers/clientlibs/clientlib-base/resources/fonts/SlatePro-Bk.woff) format('woff');
    }
    

    【讨论】:

    • 所以在我有@font-face{} 的任何地方我都需要添加font-display: swap; 吗?目前在我的样式表中,我有这个 @font-face 出现超过 20 次,添加到每个? cssts.farmers.com/etc.clientlibs/farmers/clientlibs/…
    • 对不起,我应该更清楚,为了清楚起见,我已将其添加到答案中
    • 无法访问您链接的文件,但是是的,应该交换任何字体。如果您有 20 种字体,那么您遇到的问题不仅仅是字体交换。
    • 看来它现在可以工作了,lighthouse 不再调用这些链接了,但是由于字体显示不起作用,这会对 IE 造成任何问题吗?
    • 没有任何浏览器无法识别的 CSS 属性会被忽略。就像我说的,虽然你需要替代字体,因为 woff2 不受支持。
    猜你喜欢
    • 1970-01-01
    • 2019-08-21
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2022-07-12
    相关资源
    最近更新 更多