Revalidace na vyžádání vám umožňuje zneplatnit cachované/statické stránky přesně ve chvíli, kdy se data změní — místo čekání na časový interval. Je to přesný doplněk k časové ISR (revalidate: N).
Časová vs. na vyžádání
revalidate = ;
Revalidace na vyžádání vám umožňuje zneplatnit cachované/statické stránky přesně ve chvíli, kdy se data změní — místo čekání na časový interval. Je to přesný doplněk k časové ISR (revalidate: N).
revalidate = ;
Časová ISR je jednoduchá, ale imperfektní: příliš krátký interval = zbytečné regenerace; příliš dlouhý = zastaralý obsah. Revalidace na vyžádání to řeší spuštěním invalidace z vašeho kódu, když se změna skutečně stane.
import { revalidatePath, revalidateTag } from "next/cache";
// 1. Tag your fetches, then invalidate by tag
await fetch("https://api/posts", { next: { tags: ["posts"] } });
revalidateTag("posts"); // refresh EVERY page/fetch tagged "posts"
// 2. Or invalidate a specific path
revalidatePath("/blog/my-post");
// app/api/revalidate/route.ts — called by your CMS when an editor publishes
import { revalidateTag } from "next/cache";
import { NextRequest, NextResponse } from "next/server";
export async function POST(req: NextRequest) {
const secret = req.nextUrl.searchParams.get("secret");
if (secret !== process.env.REVALIDATE_SECRET) { // verify it's really your CMS
return NextResponse.json({ ok: false }, { status: 401 });
}
revalidateTag("posts"); // rebuild affected pages now
return NextResponse.json({ revalidated: true });
}
Tok: editor publikuje v CMS → CMS volá váš webhook → revalidateTag("posts") zneplatní cache → další návštěvník dostane čerstvě vygenerovaný statický HTML. Stránky zůstávají staticky rychlé a aktualizují se okamžitě po publikaci.
"use server";
export async function createPost(data) {
await db.post.create({ data });
revalidateTag("posts"); // user sees their new post immediately
}
Revalidace na vyžádání vám dává to nejlepší: výkon static stránek s real-time svěžestí.
Místo hádání revalidačního intervalu zneplatníte přesně ve chvíli, kdy se obsah změní — prostřednictvím webhooků (publikace CMS) nebo po Server Action mutacích — pomocí revalidateTag/revalidatePath.
Eliminuje jak zastaralý obsah, tak zbytečné nadměrné regenerace, čímž činí ISR praktickou pro obsah, který se aktualizuje nepředvídatelně.