Next.js : 増分静的再生成 (ISR)

Oct 24, 2024 pm 06:39 PM

インクリメンタル静的再生 (ISR) あり

サイト全体を再作成しなくても、静的コンテンツを更新できます。ほとんどのリクエストに対して事前に作成された静的ページを提供することで、サーバーの負荷を軽減できます。次回の作成に時間がかかる前に、大量のコンテンツ ページを処理できます。

例から始めましょう :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

export const revalidate = 30

 

export const dynamicParams = true // or false, to 404 on unknown paths

 

export async function generateStaticParams() {

  const posts = await fetch('https://jsonplaceholder.typicode.com/posts/').then((res) =>

    res.json()

  )

  return posts.map((post) => ({

    id: String(post.id),

  }))

}

 

export default async function Page({ params }) {

  const post = await fetch(`https://jsonplaceholder.typicode.com/posts/${params.id}`).then(

    (res) => res.json()

  )

  return (

    <main>

      <h1>{post.title}</h1>

      <p>{post.content}</p>

    </main>

  )

}

ログイン後にコピー

この例はどのように機能するのか?

これらのページ (/post/1 など) に対して行われたすべてのリクエストは キャッシュされ、瞬時に処理されます。 30 秒が経過した後も、次のリクエストではキャッシュされた (古い) ページが表示されます。 キャッシュが無効になり、ページの新しいバージョンがバックグラウンドで生成され始めます。正常に生成されると、Next.js は更新されたページを表示してキャッシュします。/post/12 がリクエストされた場合、Next.js はこのページをオンデマンドで生成してキャッシュします。

さらに精度が必要な場合は、オンデマンド再検証を使用できますが、リアルタイムのデータが必要な場合は、動的処理への切り替えを検討してください。


revalidatePath を使用したオンデマンドの再検証

Next.js を使用すると、特定のページまたはルートのキャッシュを手動でクリアできます。つまり、特定のコンテンツが更新された場合、すべてのページを再作成するのではなく、変更されたページまたはコンテンツのみを再作成できます。

変更があったとき (たとえば、新しい投稿が追加されたとき)、ページをすぐに更新したい場合は、revalidatePath 関数を使用してこのプロセスをトリガーできます。つまり、新しいコンテンツがユーザーに追加されるとすぐに、新しいコンテンツが表示されるようにすることができます。

1

2

3

4

5

6

7

8

'use server'

 

import { revalidatePath } from 'next/cache'

 

export async function createPost() {

  // Invalidate the /posts route in the cache

  revalidatePath('/posts')

}

ログイン後にコピー

revalidateTag を使用したオンデマンドの再検証

Next.js アプリケーションでは、特定のデータまたはコンテンツをタグ付けすることで、キャッシュを手動でクリアできます。これは、特定のコンテンツが変更されたときに、そのコンテンツのキャッシュ全体をクリアするために使用されます。コンテンツが更新されると、ユーザーには最新のデータが表示されます。

1

2

3

4

5

6

7

export default async function Page() {

  const data = await fetch('https://api.vercel.app/blog', {

    next: { tags: ['posts'] },

  })

  const posts = await data.json()

  // ...

}

ログイン後にコピー

その後、revalidateTag を使用できます:

1

2

3

4

5

6

7

8

'use server'

 

import { revalidateTag } from 'next/cache'

 

export async function createPost() {

  // Invalidate all data tagged with 'posts' in the cache

  revalidateTag('posts')

}

ログイン後にコピー

ISR は、静的エクスポート を作成する場合にはサポートされません。静的にレンダリングされたルートに複数のフェッチ リクエストがあり、それぞれの revalidate 頻度が異なる場合、最も低い時間が ISR に使用されます。ただし、これらの再検証頻度はデータ キャッシュによって引き続き考慮されます。ルートで使用される フェッチ リクエスト のいずれかが再検証時間 0 であるか、明示的にストアなしの場合、ルートは動的に再検証されます。レンダリングされました。 ミドルウェアは、オンデマンド USER リクエストに対して実行されません。つまり、ミドルウェアのパス書き換えやロジックは適用されません。正確なパスを再検証していることを確認してください。たとえば、書き換えられた /post-1 の代わりに /post/1 になります。


私の記事が気に入ったら、コーヒーをおごってください :)
Next.js : Incremental Static Regeneration (ISR)

以上がNext.js : 増分静的再生成 (ISR)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

' this' JavaScriptで? ' this' JavaScriptで? Mar 04, 2025 am 01:15 AM

' this' JavaScriptで?

ソースビューアーでjQueryの知識を向上させます ソースビューアーでjQueryの知識を向上させます Mar 05, 2025 am 12:54 AM

ソースビューアーでjQueryの知識を向上させます

モバイル開発用のモバイルチートシート10個 モバイル開発用のモバイルチートシート10個 Mar 05, 2025 am 12:43 AM

モバイル開発用のモバイルチートシート10個

See all articles