Skip to content
Latchkey

Incremental Static Regenerationとは?静的ページを更新する仕組み

Incremental static regeneration(ISR)は、公開済みの静的サイトが、すべてをrebuildする代わりに、スケジュールまたはオンデマンドで個々のページを再構築できるようにします。

静的生成は高速ですが、次のフルbuildまで古いままになり、大規模サイトでは厄介です。ISRはその中間です。ページは静的に配信されますが、設定した間隔の後にリクエストされると、プラットフォームが単一のページをバックグラウンドで再生成できます。静的な速度を保ちながら、より新鮮なコンテンツとはるかに安価なrebuildが得られます。

ISRの仕組み

各ページは再検証(revalidation)のウィンドウを宣言できます。そのウィンドウが過ぎると、次のリクエストは依然としてcacheされたページを即座に受け取りつつ、プラットフォームは新しいバージョンをバックグラウンドで再生成し、以降の訪問者に対して差し替えます。

オンデマンド再生成

時間ベースの再検証に加えて、多くのプラットフォームは、CMSの更新後など、基となるデータが変化したときに特定のページを再生成するためのhookを提供します。これにより、コンテンツの編集がフルdeployなしで影響を受けたページだけを更新できます。

なぜ存在するのか

  • 大規模サイトのフルrebuildは遅く、コストがかかります。
  • 静的配信はリクエストごとのSSRよりはるかに安価です。
  • コンテンツはまるごと新しいdeployなしでも更新する必要があります。

runtimeの要件

純粋なSSGとは異なり、ISRはdeploy後に再生成を実行できるプラットフォームを必要とするため、真に静的なホスティングではありません。ホスティングプロバイダがこのモデルをサポートしているかどうかに依存し、ある程度そのプラットフォームに縛られることになります。

CI/CDにおけるISR

CIのbuildは依然として初期の静的ページと再生成の設定を生成しますが、鮮度はpipelineではなくhost上のruntimeで処理されます。これにより、すべてのページを各deployで再構築する必要がなくなるため、大規模サイトのbuild時間が短縮されます。

重要なポイント

  • ISRはdeploy後に個々の静的ページを、スケジュールまたはオンデマンドで再生成します。
  • 静的配信の速度と、より新鮮なコンテンツ、そして安価なrebuildを組み合わせます。
  • 再生成をサポートするruntimeが必要なため、純粋な静的ホスティングではありません。

関連ガイド