【问题标题】:How I can "swap" google maps fonts to avoid googole page speed insight warning?我如何“交换”谷歌地图字体以避免谷歌页面速度洞察警告?
【发布时间】:2020-08-21 20:41:54
【问题描述】:

我有一个页脚带有谷歌地图的 html 页面。

<script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=xxxxx&callback=initMap&language=en&region=RU"></script>

所以,如果我进行谷歌页面速度洞察测试,我会收到一条消息:

配置加载网页字体时所有文本的显示

但谷歌地图被配置为只显示他们自己的字体 Roboto。 我应该怎么做才能避免警告?

【问题讨论】:

    标签: javascript google-pagespeed


    【解决方案1】:

    遗憾的是(据我所知)如果没有一些变通方法就无法真正停止此警告,您无法对注入我的 Google 地图脚本的资源进行字体交换。

    但是,您确实有几个选项可以提高性能。

    选项 1 - 阻止 Roboto 字体

    这是关于如何在this Stack Overflow answer 上执行此操作的一个很好的答案。

    这会阻止注入 Google 字体 CSS。如果您想使用它/保持 Google 地图的美感,您仍然可以从您自己的服务器或您可以控制的 CDN 加载 Roboto,而不是从 Google 字体。

    这将删除警告,但显然不利的一面是您更改了 Google 地图的样式(这可能违反了他们的条款和条件,如果您想确定,祝您好运!)

    选项 2 - 延迟插入脚本。

    您在脚本上使用async(您也使用defer,只是将async 用于Google 地图作为旁注,不要同时使用这两个选项)但它仍然会过早加载并影响您的FCP和字体显示。

    您可以在几秒钟后手动插入脚本。这可以通过一个简单的脚本插入函数和一个setTimeout 来完成,我已将其设置为 3 秒,但您可能需要调整时间。

    function appendScript(url){
           let script = document.createElement("script");
           script.src = url;
           script.async = false //IMPORTANT
           document.head.appendChild(script);
           console.log("Google Maps added");
        }
    
        setTimeout(function(){
             appendScript('https://maps.googleapis.com/maps/api/js?key=xxxxx&callback=initMap&language=en&region=RU');
        }, 3000);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-07
      • 2017-09-23
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多