尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Next.js路由段配置选项笔记

Next.js路由段配置选项笔记
📅 发布时间:2026/6/19 19:45:23

前言

大家好,我是曦远。

本来是想发昨晚写好的 starblog 管理后台重构文章的

结果打开 blog 才发现忘记提交了😂

所以写一篇新的吧

正好最近正在大量使用 Next.js

我发现部署后的首次渲染很慢,才意识到「预热」这个问题

当然这是后话了

这个框架里有大量的官方约定

这些在官方文档里都有的,就是比较分散,本文主要是概括一下这些约定

Next.js框架更新得很快,不一样的地方以官方文档为主。

缓存和渲染相关

// 控制页面重新验证的时间间隔(秒)
export const revalidate = 60; // 60秒后重新验证
export const revalidate = 0;  // 禁用缓存
export const revalidate = false; // 永久缓存// 控制页面的渲染模式
export const dynamic = 'auto';          // 默认,自动选择
export const dynamic = 'force-dynamic'; // 强制动态渲染
export const dynamic = 'force-static';  // 强制静态渲染
export const dynamic = 'error';         // 如果使用动态函数则报错// 控制动态段的行为
export const dynamicParams = true;  // 允许动态参数(默认)
export const dynamicParams = false; // 不允许动态参数

运行时配置

// 指定运行时环境
export const runtime = 'nodejs';    // Node.js 运行时(默认)
export const runtime = 'edge';      // Edge 运行时// 设置最大执行时间(秒)
export const maxDuration = 30; // 最多执行30秒

获取数据相关

// 控制 fetch 请求的缓存行为
export const fetchCache = 'auto';           // 默认缓存行为
export const fetchCache = 'default-cache';  // 默认缓存
export const fetchCache = 'only-cache';     // 只使用缓存
export const fetchCache = 'force-cache';    // 强制缓存
export const fetchCache = 'default-no-store'; // 默认不缓存
export const fetchCache = 'only-no-store';  // 只允许不缓存
export const fetchCache = 'force-no-store'; // 强制不缓存

元数据和SEO

元数据

动态生成元数据

import type { Metadata } from 'next'export async function generateMetadata({ params }: { params: { slug: string } }): Promise<Metadata> {// 根据动态参数获取数据const post = await getPost(params.slug)return {title: post.title,description: post.description,openGraph: {title: post.title,description: post.description,images: [post.image],},}
}

定义静态元数据

// 静态元数据
export const metadata: Metadata = {title: 'My Page',description: 'This is my page description',keywords: ['next.js', 'react', 'typescript'],openGraph: {title: 'My Page',description: 'This is my page description',},
}

使用场景

静态 Metadata 适用于:

  • 内容固定的页面(如关于我们、联系我们)
  • 不需要根据路由参数变化的页面
  • 简单的静态页面

动态 Metadata 适用于:

  • 博客文章详情页(根据文章 slug 获取标题、描述)
  • 产品详情页(根据产品 ID 获取信息)
  • 用户个人资料页(根据用户 ID 获取信息)
  • 任何需要根据路由参数或外部数据动态生成 metadata 的页面

静态参数

// 生成静态参数(用于动态路由)
export async function generateStaticParams() {return [{ slug: 'post-1' },{ slug: 'post-2' },];
}

常用组合示例

完全静态页面

export const dynamic = 'force-static';
export const revalidate = false;

实时动态页面

export const dynamic = 'force-dynamic';
export const revalidate = 0;

定时更新页面

export const revalidate = 3600; // 每小时更新一次

Edge 运行时优化

export const runtime = 'edge';
export const dynamic = 'force-dynamic';

API 路由配置

// 在 API 路由中也可以使用
export const runtime = 'edge';
export const maxDuration = 10;

使用场景建议

配置 适用场景
revalidate = 0 实时数据展示,如股票价格、聊天应用
revalidate = 60 定期更新的内容,如新闻、博客
dynamic = 'force-static' 完全静态的页面,如关于我们
dynamic = 'force-dynamic' 个性化内容,如用户仪表板
runtime = 'edge' 需要低延迟的全球分发
fetchCache = 'force-no-store' 敏感数据,不允许缓存

注意事项

  1. 只能在页面或布局文件中使用 :这些配置只在 page.tsx 、 layout.tsx 或 route.ts 文件中有效
  2. 这些配置选项只能在 Server Component Pages、Layouts 或 Route Handlers 中使用
  3. 必须是具名导出 :必须使用 export const 语法
  4. 配置值必须是 静态可分析的 (例如 revalidate = 600 有效,但 revalidate = 60 * 10 无效)
  5. 类型安全 :TypeScript 会检查这些配置的类型
  6. 优先级 :子路由的配置会覆盖父路由的配置

这些配置选项让 Next.js 能够精确控制每个页面的渲染和缓存行为,是 App Router 架构的核心特性之一

官方文档

Route Segment Config(路由段配置)

  • 最新版本 : https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config
  • Next.js 14 版本 : https://nextjs.org/docs/14/app/api-reference/file-conventions/route-segment-config

相关文档页面

  1. Dynamic Routes(动态路由)

    • https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes
  2. Data Fetching and Caching(数据获取和缓存)

    • https://nextjs.org/docs/app/building-your-application/data-fetching
  3. Rendering(渲染)

    • https://nextjs.org/docs/app/building-your-application/rendering
微信公众号:「程序设计实验室」 专注于互联网热门新技术探索与团队敏捷开发实践,包括架构设计、机器学习与数据分析算法、移动端开发、Linux、Web前后端开发等,欢迎一起探讨技术,分享学习实践经验。

相关新闻

  • 若依后端验证码实现
  • 解码LVGL事件
  • 11.3号学习内容

最新新闻

  • Onekey完整教程:一键解锁Steam游戏DLC的终极方案
  • 2026年南京知名3D效果图制作公司大盘点,你知道几家?
  • S12 MSCAN与SCI模块深度解析:低功耗、中断与安全初始化实战
  • MPV播放器懒人包:3分钟打造专业级视频播放体验
  • 2026年6月经验丰富的升降货梯生产公司哪家便宜,导轨式货梯升降机/厂房升降货梯/四柱液压货梯,升降货梯工厂平价推荐 - 品牌推荐师
  • 4.19周总结

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号