news 2026/4/30 22:32:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 架构的核心特性之一

官方文档#

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 7:19:32

中小诊所系统通常具备哪些功能?

中小诊所系统通常围绕提升诊疗效率、规范业务流程、改善患者体验、实现数据化管理四大核心目标设计&#xff0c;功能模块覆盖日常运营的各个环节。以下是其典型功能模块&#xff1a;一、核心业务功能1、患者管理患者档案&#xff1a;电子化记录基本信息、病史、过敏史等。就诊记…

作者头像 李华
网站建设 2026/5/1 7:13:24

黑客网站整理大全,收藏这一篇就够了

今天给大家分享一些学习网络安全的好去处。对于网络安全的学习&#xff0c;多逛论坛、阅读他人的技术分析帖是非常重要的。但有时候&#xff0c;初学者可能会感到迷茫&#xff0c;不知道去哪里寻找这些技术分析帖&#xff0c;也不知道有哪些相关的论坛或网站。所以&#xff0c;…

作者头像 李华
网站建设 2026/5/1 7:14:10

毕设开源 深度学习火焰检测识别(源码+论文)

文章目录 0 前言1 项目运行效果1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数&#xff1a;3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数…

作者头像 李华
网站建设 2026/5/1 8:35:22

alembic使用指南

一、alembic是什么&#xff1f;Alembic 是一个用于 Python 数据库迁移和版本控制的工具。它与 SQLAlchemy&#xff08;一个流行的 Python ORM 库&#xff09;紧密集成&#xff0c;共同为 Python 应用程序提供数据库管理和迁移支持。python使用mysql时常用SQLAlchemyAlembic进行…

作者头像 李华
网站建设 2026/5/1 7:21:35

生活小窍门查询小程序,核心功能,收录清洁,收纳,养生等生活小窍门,支持按关键词搜索,收藏常用技巧,离线查看,应用场景,中老年人解决生活中的小问题,如去除水垢,收纳衣物等,简单实用。

生活小窍门查询小程序 下面是一个基于Python的生活小窍门查询小程序&#xff0c;专为中老年人设计&#xff0c;具有简洁易用的界面和实用的功能。 import json import os import tkinter as tk from tkinter import ttk, messagebox, simpledialog from datetime import da…

作者头像 李华
网站建设 2026/5/1 9:25:08

**免费游戏角色AI配音软件2025推荐,适配独立开发者与小

免费游戏角色AI配音软件2025推荐&#xff0c;适配独立开发者与小型工作室一、行业背景与核心痛点对于独立开发者与小型工作室而言&#xff0c;为游戏角色注入灵魂的配音工作&#xff0c;往往是预算与创意之间最大的矛盾点。据《2025年全球独立游戏开发市场报告》显示&#xff0…

作者头像 李华