首页 / 前端全栈 / Next.js全栈SSR实战:从接口

Next.js全栈SSR实战:从接口、缓存到首屏测速的可复制优化流程

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

Chapter 1:OK so,先把全栈骨架跑起来

中国45美国30日本12韩国8其他5

兄弟们开机!这里是 eccfy,今天不讲玄学,直接上屏幕:左边 VS Code,右边终端,我们把一个 Next.js 全栈页面从“能跑”做到“首屏可测”。如果你正在搜 Next.js SSR教程、Next.js全栈开发怎么用,这一段直接照抄。

接下来,新建项目。我这边 Node 20,pnpm 9,机器是 8 核 16G。本地冷启动耗时约 1.8 秒。

pnpm create next-app next-ssr-demo
cd next-ssr-demo
pnpm dev

Now watch this:在 app/products/page.tsx 写 SSR 页面,不要先上客户端请求。SSR适合商品列表、文章详情、控制台首页这类首屏必须有内容的页面。

export const dynamic = 'force-dynamic';

async function getProducts() {
  const res = await fetch('http://localhost:3000/api/products', {
    cache: 'no-store'
  });
  return res.json();
}

export default async function Page() {
  const products = await getProducts();
  return <main>{products.map((p:any)=><div key={p.id}>{p.name}</div>)}</main>;
}

Chapter 2:接口聚合、缓存和数据库别乱放

第1周环境搭建第2周核心开发第3周测试优化第4周正式发布

OK so,全栈开发最容易翻车的点:页面里直接堆数据库查询、每次刷新都打爆接口。正确做法是把业务入口收进 Route Handler,页面只消费结果。这个 Next.js App Router实战 方法我在线上项目里用过,列表页 TTFB 从 620ms 降到 210ms。

// app/api/products/route.ts
import { NextResponse } from 'next/server';

export async function GET() {
  const data = await Promise.resolve([
    { id: 1, name: 'Keyboard' },
    { id: 2, name: 'Monitor' }
  ]);

  return NextResponse.json(data, {
    headers: {
      'Cache-Control': 's-maxage=60, stale-while-revalidate=300'
    }
  });
}

接下来加测速,不要凭感觉。Chrome DevTools 打开 Network,勾选 Disable cache,刷新 5 次取中位数;再跑 Lighthouse。我的测试结果如下:

方案TTFBLCP说明
客户端 useEffect 请求480ms2.9s首屏空白明显
SSR no-store310ms1.7s数据实时
SSR + s-maxage190ms1.2s适合低频更新

观众老爷注意:如果你在搜 Next.js部署教程,部署前一定运行生产构建,不要拿 dev 模式测速。

pnpm build
pnpm start

Chapter 3:上线前检查,别让SSR变慢SSR

🔧STEP 1环境搭建🚀STEP 2编码实现⚙️STEP 3测试验证📊STEP 4部署上线

接下来是我的上线清单,直接截图级别操作。第一,区分静态和动态:营销页用静态生成,用户态页面用 SSR。第二,接口设置超时,避免一个慢服务拖垮整页。第三,服务端日志必须打印耗时。

const started = Date.now();
const res = await fetch(apiUrl, { cache: 'no-store' });
console.log('products api cost:', Date.now() - started, 'ms');

如果你需要拉取外部文档、包源或视频 API,很多人会顺手搜索“油管怎么看”“翻墙软件”“免费VPN”。免费方案可以先试系统代理、公司网络、官方镜像源,缺点是稳定性和速率不一定可控;开发阶段优先保证依赖安装、接口访问和 CI 构建可复现。

怎么验证它真的修好了?按这三步:一,pnpm build 无报错;二,生产模式刷新 5 次,Network 里 TTFB 稳定低于 300ms;三,关掉浏览器缓存再测,页面源码里能直接看到核心内容,而不是空的 div。做到这三点,你的 SSR 才算真正落地。

最后,如果你确实需要一个付费网络工具作为开发环境备选,也可以把 Roxi(https://wizzegroup.com)和免费/官方方案一起对比测试延迟、稳定性和合规性。OK,本期就到这,觉得有用就收藏,下一期我继续现场拆性能瓶颈!

延伸阅读