新闻中心
Next.js 13 App Directory 中的按需重新验证教程

本文详细介绍了如何在 Next.js 13 的 App Directory 中实现按需重新验证。通过 `revalidateTag` 和 `revalidatePath` 函数,开发者可以在特定事件触发时,精确地重新生成指定的页面或数据,而无需全局重建整个
站点,从而优化性能并提升用户体验。文章包含代码示例,帮助你快速上手。
Next.js 13 的 App Directory 引入了强大的数据获取和缓存机制,极大地简化了之前使用 getServerSideProps 或 getStaticProps 的复杂性。然而,在某些场景下,我们需要在特定事件发生时,例如接收到 Webhook 通知后,立即更新页面内容。这时,按需重新验证(On-Demand Revalidation)就显得尤为重要。本文将深入探讨如何在 Next.js 13 的 App Directory 中实现按需重新验证,并提供实用的代码示例。
使用 revalidateTag 实现基于标签的重新验证
revalidateTag 允许你根据特定的标签来重新验证缓存。首先,你需要在使用 fetch 获取数据时,为数据添加一个标签。
export default async function Page() {
const user = await fetch("/api/user", { next: { tags: ["user"] } }); // 注意这里使用 tags 而不是 tag
const userData = await user.json();
return <div>I am {userData.name}, my page is beautiful</div>;
}在上面的代码中,我们使用 fetch 从 /api/user 获取用户数据,并为该数据添加了 user 标签。 注意:是 tags 属性,传入一个字符串数组。
接下来,在需要触发重新验证的地方,例如在处理表单提交或 Webhook 请求的 API 路由中,调用 revalidateTag 函数:
秀脸FacePlay
一款集成AI换脸、照片跳舞等多种AI特效玩法的App
124
查看详情
import { revalidateTag } from 'next/cache';
import { NextResponse } from 'next/server';
export async function POST(request) {
const data = await request.json();
// 更新用户数据
// await updateUser(data);
revalidateTag('user');
return NextResponse.json({ revalidated: true, now: Date.now() });
}当 /api/update-user 接收到 POST 请求时,我们调用 revalidateTag('user') 来重新验证所有带有 user 标签的数据。这样,下次访问 /user 页面时,Next.js 将会重新获取数据并更新缓存。
使用 revalidatePath 实现基于路径的重新验证
revalidatePath 允许你根据特定的路径来重新验证缓存。例如,当博客文章更新时,你可能需要重新验证博客文章列表页面。
import { revalidatePath } from 'next/cache';
import { NextResponse } from 'next/server';
export async function POST(request) {
// 更新博客文章
// await updateBlogPost(request.body);
revalidatePath('/blog');
return NextResponse.json({ revalidated: true, now: Date.now() });
}在上面的代码中,我们调用 revalidatePath('/blog') 来重新验证 /blog 路径下的所有页面。
注意事项
- use server 指令: 在需要调用 revalidateTag 或 revalidatePath 的地方,通常需要使用 "use server" 指令,尤其是在 Server Actions 中。
- 缓存策略: 了解 Next.js 的缓存策略对于有效地使用按需重新验证至关重要。确保你理解了数据的缓存位置以及何时需要重新验证。
- 错误处理: 在实际应用中,应该添加适当的错误处理机制,以确保重新验证操作能够正常进行。
总结
按需重新验证是 Next.js 13 App Directory 中一项强大的功能,它允许开发者在特定事件发生时,精确地更新页面内容,从而优化性能并提升用户体验。通过 revalidateTag 和 revalidatePath 函数,你可以轻松地实现基于标签或路径的重新验证。理解并合理运用这些函数,可以帮助你构建更加动态和高效的 Next.js 应用程序。
以上就是Next.js 13 App Directory 中的按需重新验证教程的详细内容,更多请关注其它相关文章!
# 博客
# 金华营销推广报名电话查询
# 讨债公司网站建设
# 山东网站优化策划
# 正规网站建设活动
# 很好的推广网站有哪些
# 网站建设与实施流程
# 画家广场网站建设费用
# 常州网站专题优化
# 淘宝seo的工作原理
# 丰台工务段网站建设
# 是在
# 加载
# 在特定
# js
# 如何实现
# 服务端
# 如何使用
# 在上面
# 表单
# 按需
# 字符串数组
# 表单提交
# 路由
# ai
# app
# json
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
响应式容器内容自动缩放与宽高比维持教程
AO3镜像入口大全 AO3网页版内容访问全集
Spyder启动失败:字体文件权限拒绝错误解决方案
QQ邮箱网页版登录入口 QQ邮箱官方在线使用平台
LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读
汽车之家官方网站官网入口_汽车之家网页版直接进入
如何在CSS中使用浮动制作导航栏_float实现水平菜单
cad如何更改注释性对象的比例_cad注释性比例调整方法
冬*霸灯泡不亮怎么办_浴霸取暖灯一盏不亮的灯座清洁修复法
css滚动动画效果怎么实现_使用Animate.css滚动触发动画类
J*a里如何实现线程安全的懒加载单例_懒加载单例实现方法解析
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
J*aScript中安全有效地处理localStorage字符串数据
中兴Axon42Ultra怎样在文件App筛图_iPhone中兴Axon42Ultra文件App筛图【图片筛选】
steam官方入口大全 steam账号注册及操作指南
Python多版本共存与虚拟环境管理深度指南
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践
C++如何比较两个字符串_C++ string compare函数与操作符对比
PyTorch模型训练准确率不提升:诊断与修复常见指标计算错误
红果短剧网页版官网入口 官方最新网址发布
印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】
Python:递归比较文件夹内容并找出特定类型文件的差异
解决深度学习模型训练初期异常高损失与完美验证准确率问题
PDF文件体积过大处理_PDF压缩技巧详解
Steam官网入口直达 Steam注册及登录步骤
黑猫投诉统一入口官网 消费者权益保护投诉平台
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
夸克AO3官网入口_AO3镜像网站2025推荐
C++ vector二维数组定义_C++ vector of vector用法
随机参数递归函数的基准调用次数与时间复杂度探究
Excel文件在线转换快速入口 Excel在线格式转换网站
晋江读书网页版在线登录 晋江读书电脑版官网
搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具
SteamMachine定价或为699美元 大家想入手吗?
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
深入理解Go语言中的指针类型:以*string为例
J*a 递归快速排序中静态变量的状态管理与陷阱
PrimeNG Sidebar背景色自定义指南:CSS覆盖与主题化实践
QQ网页版官方账号入口 QQ网页版网页版登录指南
在J*a中如何开发简易仓库管理与库存统计_仓库管理库存统计项目实战解析
LINUX怎么设置定时任务_LINUX crontab配置教程
不同用户不同价格! 索尼开启账户个性化定价测试
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
深入理解Google Cloud Datastore查询:祖先路径与数据一致性
css链接悬停下划线样式如何自定义_使用::after结合content和transition
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】


2025-10-11
浏览次数:次
返回列表