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

Next.js使用SSR时页面加载时间过长 大量workbox运行拖慢加载速度

性能截图1
性能截图2

问题原因

workbox是Service Worker生态的工具库,你观察到的大量workbox运行耗时,基本是项目集成了next-pwa插件后配置不合理导致:

  • 开发环境下PWA的Service Worker反复注册、缓存校验逻辑会额外占用运行资源
  • 静态资源缓存策略配置不当,每次请求都触发workbox的规则匹配、缓存校验逻辑
  • SSR页面的动态资源被误加入缓存规则,多余的缓存判断拖慢页面加载速度
解决方案

1. 开发环境直接禁用PWA

修改next.config.js配置,开发环境关闭PWA功能,避免不必要的workbox运行:

const withPWA = require('next-pwa')({
  dest: 'public',
  disable: process.env.NODE_ENV === 'development',
});

module.exports = withPWA({
  // 其他next.js配置项
});

2. 优化生产环境缓存规则

调整workbox缓存策略,排除SSR动态页面、接口请求的不必要缓存:

const withPWA = require('next-pwa')({
  dest: 'public',
  disable: process.env.NODE_ENV === 'development',
  workboxOptions: {
    // 排除不需要缓存的动态资源路径
    exclude: [
      /^\/api\/.*/,
      /^\/_next\/data\/.*/,
      /\.html$/,
    ],
    runtimeCaching: [
      {
        urlPattern: /^.*\.(png|jpg|jpeg|gif|webp|svg|ico|css|js)$/,
        handler: 'CacheFirst',
        options: {
          cacheName: 'static-assets',
          expiration: {
            maxEntries: 100,
            maxAgeSeconds: 30 * 24 * 60 * 60,
          },
        },
      },
    ],
  },
});

3. 无需PWA功能直接移除

如果你不需要离线访问、PWA相关能力,直接卸载next-pwa依赖包,删除next.config.js内的相关配置即可完全消除workbox的运行耗时。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:48:03