shinyaz.com

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

約1分

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

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

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

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 に関する学びをこのブログで発信しています。