OpenAINext.js2024/10/24 14:00

Our Journey with Caching

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

元記事

Quick Digest

要約

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

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

キャッシュとの歩み — Next.js 実験的モードの概要

Key Points

  • use cacheで静的化
  • Suspenseで動的化
  • cacheTag/cacheLife追加

Summary

Next.jsの新しい実験的キャッシュモードは、2つの概念(<Suspense> と "use cache")に基づき、データを扱う際に明示的に「キャッシュするか動的にするか」を選択させます。fetch() やデータベースなどの任意の非同期APIは、選択を行わないとエラーになります。これにより隠れたキャッシュを排し、静的/動的/部分的レンダリングを分かりやすくコントロールできます。実装には関数レベルでのキャッシュ指定、タグ付け(cacheTag)、寿命指定(cacheLife)などのAPIが追加されており、既存のセグメント設定は後方互換で維持されます。現時点では実験段階のため、canaryとexperimental.dynamicIOフラグでの試用が推奨されます。

Key Points

  • <Suspense> で囲むとその境界内は動的(毎リクエスト実行/ストリーミング)。デフォルトでキャッシュしない。
  • ファイル/関数冒頭に "use cache" を付けるとそのセグメント(または関数)はキャッシュされ、静的レンダリング可能。
  • 任意の async 関数に "use cache" を付けられる(引数・クロージャを含む自動キャッシュキー)。
  • cacheTag() でキャッシュエントリにタグを付け、revalidateTag() で部分的に再検証可能。
  • cacheLife() で寿命を簡易指定("seconds","minutes","hours","days","weeks","max"、カスタムプロファイルも可)。クライアントのstaleやexpireも制御可能。
  • キャッシュと動的データを混在させた場合、ビルド時にエラーで検出されるため意図的な選択を強制する。
  • 既存の動的設定(export const dynamic 等)は後方互換で残るが、fetch() のデフォルト挙動は変更される可能性があり、現段階は実験的(グリーンフィールドでの検証を推奨)。

Try it (短縮)

  • canaryで試す: npx create-next-app@canary
  • next.config.ts に experimental.dynamicIO: true を有効化
  • 詳細はドキュメントの use cache / cacheTag / cacheLife を参照

Full Translation

翻訳

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

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

キャッシュに関する私たちの歩み

キャッシュに関する私たちの歩み

Next.js App Routerにおけるキャッシュの取り組みについて学びます。この記事では私たちが経験した課題、試したアプローチ、そして得られた教訓を共有します。

  • 対象読者: Next.js App Routerを利用している開発者
  • 取り上げる内容: 実装の選択肢、パフォーマンス上の考慮点、キャッシュ戦略の比較
  • 目的: より安定で高速なアプリケーションを構築するための実践的な知見の提供

本文では具体的なケーススタディやベストプラクティスを順を追って説明します。