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

Next.js自定义HTTPS服务器加载缓慢问题求助

问题分析与解决方案

核心问题:自定义服务器未正确使用生产构建产物

从你的运行日志能看到,服务器启动后仍在实时编译页面(wait - compiling...),这说明Next.js正处于开发模式而非生产模式——开发模式会实时编译代码,这是生产环境页面加载缓慢的主要原因。

解决步骤:

  1. 强制启用生产环境模式
    你的代码通过process.env.NODE_ENV !== 'production'判断运行模式,但启动服务器时可能未设置该环境变量。修改启动命令为:

    NODE_ENV=production sudo node server
    

    也可以在服务器全局配置中固定NODE_ENV=production(比如写入/etc/profile或服务配置文件),避免每次手动设置。

  2. 验证构建产物有效性
    执行next build后,项目根目录会生成.next文件夹,生产模式下Next.js会直接读取该文件夹的预编译产物,启动时不会出现compiling类日志。如果仍有编译日志,检查:

    • .next文件夹是否存在且完整
    • 运行node server的终端是否处于项目根目录(确保程序能读取到.next)

硬件限制排查

如果确认已处于生产模式但加载仍慢,再排查DigitalOcean VPS的硬件资源:

  • 用htop命令查看CPU、内存使用率,高峰时段若CPU跑满或内存不足(比如基础款512MB内存),会导致页面渲染卡顿。
  • 若硬件资源不足,可升级VPS配置(建议1GB内存起步),或优化页面SSR逻辑(减少服务器端计算量)。

其他优化建议

  1. 改用Nginx反向代理处理HTTPS
    原生https.createServer仅支持HTTP/1.1,HTTP/2能大幅提升加载速度。建议用Nginx配置SSL证书并启用HTTP/2,反向代理到Next.js的本地HTTP服务器:

    • 让Next.js服务器监听本地端口(比如3000),移除自定义HTTPS逻辑
    • Nginx配置转发规则,将外部HTTPS请求转发到3000端口
  2. 配置静态资源缓存
    对Next.js生成的静态资源(.next/static目录下的文件)设置长期缓存头,减少重复请求。可在自定义服务器中添加逻辑:

    // 在handle(req, res)前添加
    if (req.url.startsWith('/_next/static/')) {
      res.setHeader('Cache-Control', 'public, max-age=31536000, immutable');
    }
    
  3. 优化页面资源

    • 使用Next.js的Image组件自动压缩、懒加载图片
    • 移除不必要的第三方脚本,或延迟加载非核心脚本
    • 确认SWC压缩在生产模式下正常生效(你的日志已显示启用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:25:22