当前位置: 首页 > news >正文

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

来是想发昨晚写好的 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' 敏感数据,不允许缓存

注意事项#

只能在页面或布局文件中使用 :这些配置只在 page.tsx 、 layout.tsx 或 route.ts 文件中有效

这些配置选项只能在 Server Component Pages、Layouts 或 Route Handlers 中使用

必须是具名导出 :必须使用 export const 语法

配置值必须是 静态可分析的 (例如 revalidate = 600 有效,但 revalidate = 60 * 10 无效)

类型安全 :TypeScript 会检查这些配置的类型

优先级 :子路由的配置会覆盖父路由的配置

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

官方文档#

http://www.cnnetsun.cn/news/40588.html

相关文章:

  • CANN Samples(十九):特色场景:机器人 AI 绘画 手写识别等
  • 毕设开源 深度学习YOLO交通路面缺陷检测系统(源码+论文)
  • 【URP】Unity[后处理]色彩调整ColorAdjustments
  • Flutter混合开发与WebView集成实战
  • 压缩空气储能和释能阶段模型,附相关文档文献。 建立了压缩空气储能系统中的压缩机、换热器、储气罐...
  • Profinet转Modbus TCP工业数据采集网关:实现1200PLC 与打标卡数据实时传输
  • Flutter 2025 国际化与本地化实战:从多语言支持到文化适配,打造真正全球化的用户体验
  • P1178 到天宫做客 题解
  • 2025年GEO优化机会与争议以及规范发展的必要性
  • 2026老年春晚怀化区域节目征集启动仪式在怀化学院举行
  • 【笔记篇】【硬件基础篇】电力电子元器件应用手册 阅读笔记(1)电阻器及其应用
  • 柠檬 软件测试之python全栈自动化测试工程师第25期
  • 为什么你的视觉AI项目总是耗时又低效?Florence-2-large-ft一站式解决方案
  • 基于php的微信小程序的学习交流平台系统(源码+lw+部署文档+讲解等)
  • springboot高校读书分享系统的设计与实现_34ur7fyk-
  • 如何快速解锁RouterOS无限权限:MikroTikPatch的终极指南
  • 测试工程师的增值型职业休假策略:从技术深耕到跨界突破
  • USART串口
  • SDET职业生涯中的关键决策点与路径选择
  • 第三方API密集型聚合服务的测试体系构建
  • System Informer:你的Windows系统管家,3大核心功能深度解析
  • 探索城市脉搏:解密共享单车数据背后的故事
  • 如何用abogen构建高质量有声书生成系统:从单文件到批量处理的完整指南
  • FastText实战进阶:解锁文本处理的极致性能与多场景应用
  • 车载功能测试都要做什么?总结来了~
  • 终极指南:掌握CogVLM多模态大模型核心技术
  • 【毕业设计/课程设计】基于Python的热门微博数据可视化分析源码+论文+PPT+数据
  • 监控选购全攻略:6大场景首选品牌,海康威视/格行视精灵各有侧重,小米性价比,萤石更全能;格行视精灵AOV技术+终生免流真好用?
  • 5步掌握Three.js延迟渲染技术:从多光源卡顿到流畅渲染的终极指南
  • Profinet转ModbusTCP网关:实现西门子1200PLC与打标卡稳定通讯