You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google PageSpeed移动端性能优化:LiveChat第三方脚本加载问题解决方案咨询

优化LiveChat脚本以提升移动端PageSpeed Insights评分

问题概述

你当前使用的LiveChat初始化脚本会显著拖慢移动端页面的Time to Interactive指标,导致PageSpeed评分偏低。以下是针对该问题的具体优化方案:

优化方案

1. 按需加载:仅在用户点击聊天按钮时加载脚本

这是最有效的优化方式,完全避免了脚本在页面初始加载阶段占用资源。修改后的代码如下:

$(".openChat").on("click", function (event) {
    event.preventDefault();

    // 避免重复加载脚本
    if (window.LC_API) {
        LC_API.open_chat_window();
        return;
    }

    // 初始化LiveChat配置
    window.__lc = { license: XXXXXX };
    
    // 动态加载脚本
    const lcScript = document.createElement("script");
    lcScript.type = "text/javascript";
    lcScript.async = true;
    lcScript.src = `${document.location.protocol === "https:" ? "https://" : "http://"}cdn.livechatinc.com/tracking.js`;
    
    // 脚本加载完成后初始化API回调并打开聊天窗口
    lcScript.onload = function() {
        window.LC_API = window.LC_API || {};
        
        LC_API.open_chat_window = function () {
            $(".chatbox").show();
            $("#chat-widget-container").show();
        };
        LC_API.on_chat_window_minimized = function () {
            $(".chatbox").show();
            $("#chat-widget-container").hide();
        };
        LC_API.on_chat_window_opened = function () {
            $(".chatbox").hide();
            $("#chat-widget-container").show();
        };
        LC_API.on_chat_window_hidden = function () {
            $(".chatbox").show();
            $("#chat-widget-container").show();
        };

        // 加载完成后立即打开聊天窗口
        LC_API.open_chat_window();
    };

    // 插入脚本到页面
    document.getElementsByTagName("script")[0].parentNode.insertBefore(lcScript, document.getElementsByTagName("script")[0]);
});

注意:我修正了你代码中jQuery选择器多余的转义符($("\.chatbox") → $(".chatbox")),这些转义符是不必要的,可能会导致选择器解析异常。

2. 延迟加载:页面空闲时加载脚本

如果你希望聊天窗口能快速响应点击,也可以选择在页面加载完成且用户无操作的空闲时段加载脚本,比如页面加载后延迟2秒,或者用户滚动页面后加载:

let chatScriptLoaded = false;

// 定义加载脚本的函数
function loadLiveChat() {
    if (chatScriptLoaded) return;
    chatScriptLoaded = true;

    window.__lc = { license: XXXXXX };
    const lcScript = document.createElement("script");
    lcScript.type = "text/javascript";
    lcScript.async = true;
    lcScript.src = `${document.location.protocol === "https:" ? "https://" : "http://"}cdn.livechatinc.com/tracking.js`;
    
    lcScript.onload = function() {
        window.LC_API = window.LC_API || {};
        // 初始化API回调(和上面一致)
        LC_API.open_chat_window = function () {
            $(".chatbox").show();
            $("#chat-widget-container").show();
        };
        LC_API.on_chat_window_minimized = function () {
            $(".chatbox").show();
            $("#chat-widget-container").hide();
        };
        LC_API.on_chat_window_opened = function () {
            $(".chatbox").hide();
            $("#chat-widget-container").show();
        };
        LC_API.on_chat_window_hidden = function () {
            $(".chatbox").show();
            $("#chat-widget-container").show();
        };
    };

    document.getElementsByTagName("script")[0].parentNode.insertBefore(lcScript, document.getElementsByTagName("script")[0]);
}

// 页面加载完成后延迟2秒加载
window.addEventListener('load', () => {
    setTimeout(loadLiveChat, 2000);
});

// 或者监听用户滚动,触发一次后加载
window.addEventListener('scroll', () => {
    loadLiveChat();
}, { once: true });

// 聊天按钮点击事件
$(".openChat").on("click", function (event) {
    event.preventDefault();
    if (window.LC_API) {
        LC_API.open_chat_window();
    } else {
        // 如果脚本未加载,先加载再打开
        loadLiveChat();
        // 轮询检查脚本是否加载完成
        const checkInterval = setInterval(() => {
            if (window.LC_API) {
                clearInterval(checkInterval);
                LC_API.open_chat_window();
            }
        }, 100);
    }
});

3. 优化主线程阻塞

  • 确保脚本使用async属性(你的代码已经做到了,但要确保动态创建的脚本也保留这个属性)
  • 避免在初始阶段执行不必要的API回调绑定,把绑定逻辑放到脚本加载完成后

额外建议

  • 可以考虑隐藏初始的聊天按钮,直到脚本加载完成后再显示,避免用户点击时出现延迟
  • 测试优化后的脚本,确保聊天功能正常工作,同时再次运行PageSpeed Insights验证性能提升

内容的提问来源于stack exchange,提问作者Mittul At TechnoBrave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 19:02:35