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

如何在CanvasKit缓存未命中时显示启动屏?

方案:仅在本地缺少canvaskit.wasm时显示启动屏

启发式判断方案

以下两种非绝对准确但实用的判断方式,可满足需求:

  • 网络请求检测法
    在应用启动初期,对canvaskit.wasm发起轻量的HEAD请求,通过响应状态判断文件是否存在:

    async function hasLocalCanvasKit() {
      try {
        const res = await fetch('canvaskit.wasm', { method: 'HEAD' });
        return res.ok;
      } catch (err) {
        // 请求失败(404、跨域或网络问题),判定本地无文件
        return false;
      }
    }
    
    // 使用示例
    if (!(await hasLocalCanvasKit())) {
      showSplashScreen();
    }
    // 继续加载应用逻辑
    
  • 初始化时长阈值法
    利用本地文件加载远快于网络下载的特点,设置时长阈值判断是否需要显示启动屏:

    const loadStart = Date.now();
    // 执行你的CanvasKit加载逻辑
    await initializeCanvasKit();
    const loadDuration = Date.now() - loadStart;
    
    // 阈值可根据实际环境调整,比如500ms
    if (loadDuration > 500) {
      // 加载耗时过长,判定为需要从网络下载,显示启动屏
      showSplashScreen();
    }
    

不推荐始终显示启动屏的原因

始终显示启动屏会导致本地已有canvaskit.wasm的场景下,启动屏被瞬间关闭,这种突兀的UI切换会带来怪异的用户体验,因此并非最优选择。

内容的提问来源于stack exchange,提问作者user2232305

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:49:53