@shinyaz

Next.js の 'use cache' ディレクティブでコンポーネントレベルのキャッシュが可能

約1分

Server Component のデータ取得にキャッシュを効かせたくて Next.js のドキュメントを読んでいたら、従来の fetch(..., { next: { revalidate: 60 } }) とは別に "use cache" ディレクティブが追加されていた。驚いたのは、fetch に限らず任意の非同期関数や Server Component にそのまま使えること:

TypeScript
async function getData() {
  "use cache";
  const res = await fetch("https://api.example.com/data");
  return res.json();
}

従来のパターンだと fetch の呼び出しごとにキャッシュ設定を書く必要があったが、"use cache" なら関数単位でキャッシュが効く。データベースクエリや外部 API のラッパー関数にもそのまま使えるのが嬉しい。キャッシュ期間は cacheLife で制御する:

TypeScript
import { cacheLife } from "next/cache";
 
async function getData() {
  "use cache";
  cacheLife("hours");
  // ...
}

定義済みプロファイル: "seconds", "minutes", "hours", "days", "weeks", "max"next.config.tscacheLife でカスタムプロファイルも定義できる。

共有する

田原 慎也

田原 慎也

ソリューションアーキテクト @ AWS

AWS ソリューションアーキテクトとして金融業界のお客様を中心に技術支援をしており、クラウドアーキテクチャや AI/ML に関する学びをこのサイトで発信しています。このサイトの内容は個人の見解であり、所属企業の公式な意見や見解を代表するものではありません。