【问题标题】:Including script in react app decreases lighthouse performance score a lot在反应应用程序中包含脚本会大大降低灯塔性能得分
【发布时间】:2021-04-28 20:42:40
【问题描述】:

我一直在测试导致我的灯塔得分低的原因,当我删除以下脚本时,它似乎上升了 30%!我不知道为什么。

这是脚本(smartupp - 一个网络聊天帮助应用)

<script
                    defer
                    type="text/javascript"
                    dangerouslySetInnerHTML={{ __html: `
                        var _smartsupp = _smartsupp || {};
_smartsupp.key = 'key';
window.smartsupp||(function(d) {
  var s,c,o=smartsupp=function(){ o._.push(arguments)};o._=[];
  s=d.getElementsByTagName('script')[0];c=d.createElement('script');
  c.type='text/javascript';c.charset='utf-8';c.async=true;
  c.src='https://www.smartsuppchat.com/loader.js?';s.parentNode.insertBefore(c,s);
})(document);
                    ` }}
                />

我将其包含在页面末尾附近。 当我包含它时,在灯塔分数中它显示“减少未使用的 JavaScript”,我认为是因为 smartupp 包含以下内容:

有人知道为什么这个脚本会大大降低我的性能吗?以及我可以做些什么来改进它。

我正在使用 NextJs (React)。

【问题讨论】:

    标签: javascript reactjs next.js smartsupp


    【解决方案1】:

    您在页面加载时加载整个聊天应用程序。但是您可能只会在用户单击某个按钮时使用它。
    我的建议是添加一个具有相同设计的按钮,并仅在用户单击它后才加载此 smartsuppchat 脚本。 加载后打开聊天需要一些额外的逻辑,但您需要查阅 smartsuppchat 文档。

    【讨论】:

    • 我在脚本上有“延迟”,并认为这会有所帮助,因此它不计入灯塔性能得分。怎么会呢?是的,也许我需要一个中间按钮,但感觉不对。当然 smartsupp 应该足够聪明。
    • 那些 3rd 方工具很少足够聪明,defer 会在页面解析之后但仍然在用户点击按钮之前解析脚本(在 TTI 之前,所以灯塔对你不利)
    猜你喜欢
    • 1970-01-01
    • 2020-06-25
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 2019-08-09
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多