ISR: páginas estáticas que se atualizam sozinhas

Publicidade

Um site estático é rápido porque a página já está pronta quando o leitor chega. O problema é atualizar: tradicionalmente, publicar um texto novo exigia gerar o site inteiro de novo. A Regeneração Estática Incremental (ISR) resolve isso página por página.

Como funciona

  1. O primeiro acesso a uma página a renderiza no servidor e guarda o resultado em cache.

  2. Os acessos seguintes recebem a cópia pronta, sem renderizar nada.

  3. Quando o conteúdo muda, a cópia é descartada e a próxima visita gera uma nova.

Por tempo ou sob demanda

Há duas formas de dizer quando a cópia expira. Por tempo, com export const revalidate = 60, a página é refeita no máximo a cada 60 segundos. Sob demanda, o próprio sistema avisa que algo mudou:

import { revalidatePath } from 'next/cache'

export async function publicar(slug: string) {
  // ...grava o artigo no banco...
  revalidatePath('/')           // a home lista o artigo
  revalidatePath(`/${slug}`)   // a página do próprio artigo
}

Para um blog, a revalidação sob demanda costuma ser a melhor escolha: a página fica em cache indefinidamente e só é refeita quando alguém de fato publica ou edita.

O cuidado que não aparece no tutorial

Uma página não vive só na própria URL. Um artigo aparece na home, nas páginas de categoria, no RSS e no sitemap. Invalidar só a página do artigo deixa essas outras rotas desatualizadas, e é justamente delas que dependem a indexação e a distribuição.

Performance