OpenAINext.js2025/01/03 14:00

Composable Caching with Next.js

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

openaijamodel: gpt-5-mini-2025-08-07

Next.jsでのComposable Caching('use cache' ディレクティブ)

Key Points

  • コンパイラが依存を静的解析
  • クロージャー依存を自動でキー化
  • タグで部分無効化が可能

Summary

Next.js の 'use cache' は関数やコンポーネントをコンパイラがキャッシュ対象として扱うためのディレクティブです。コンパイラがクロージャー内の依存関係を静的解析してキャッシュキーに含めるため、手動でキーを管理する必要が減り、部分的(コンポーネント内の穴=children を除く)なキャッシュが可能になります。シリアライズ可能な引数はキー化され、非シリアライズ可能な値は参照(reference)として扱われ実行時に復元されます。cacheLife / cacheTag / revalidateTag によるライフサイクル管理とタグベースの無効化もサポートします。なお現状は実験的機能です。

Key Points

  • 'use cache' を関数内に置くとコンパイラが専用のキャッシュ可能サーバー関数に変換する
  • クロージャーの外部変数(親コンポーネントの props 等)も依存関係として静的に検出し、キャッシュキーに含める
  • シリアライズ可能な引数はキーに含める。非シリアライズ可能な値は実行時参照に置き換えられ、キャッシュに含められない
  • 子要素(children)は参照として扱われるため、ドーナツパターンのような部分キャッシュ(outer cached, inner dynamic)が安全にできる
  • cacheLife() で生存時間を設定し、cacheTag()/revalidateTag() でタグ付け・個別無効化が可能
  • ランタイムのみの cache() 関数はクロージャー依存の自動取り込みができないため、手動キー指定ミスによるコリジョンやステールのリスクがある
  • 機能は experimental。導入前にドキュメントと互換性を確認すること

Practical notes

  • 既存のデータ取得関数に 'use cache' を追加すると簡単にキャッシュ化できる
  • 非シリアライズ可能な値をキーにしたい場合は明示的に設計し、参照復元の挙動を理解する
  • タグ付けパターン(fetch → cacheTag)を使うと、CMSや編集フローからの部分的再検証が可能

詳細は公式ドキュメントを参照し、実験的である点を踏まえて段階的に導入してください。

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

openaijamodel: gpt-5-mini-2025-08-07

Next.js におけるコンポーザブルキャッシング

概要

use cache の API 設計と利点について詳しく学びます。Next.js におけるコンポーザブルキャッシングの考え方、導入に伴うメリット、実装時の注意点を把握できます。

学べる内容

  • API デザイン: use cache がどのように設計され、どんなシグネチャや動作を持つか。
  • 利点: パフォーマンス改善、再利用性、組み合わせ可能なキャッシュ戦略など。
  • 使い方: Next.js アプリケーション内での基本的な使用例とベストプラクティス。
  • 注意点: キャッシュの無効化や一貫性、サーバー/クライアント間の振る舞いの違い。

次のステップ

公式ドキュメントやリファレンスを参照して、use cache の具体的な API と実装例を確認してください。サンプルコードを試し、アプリケーションの要件に合わせてキャッシュ戦略を調整しましょう。

Next.js におけるコンポーザブルキャッシング | Next.js | DocsDigest