BigPipe(ビッグパイプ)は Drupal 8.3 から正式に実装された、ページ表示の体感速度を大きく向上させる技術です。
以下は drupal.org にある BigPipe の解説ページの日本語訳です(以下、「Issue cue(課題リスト)」の項目は省略)。
概要
BigPipe モジュールは Drupal 8.1 から Drupal 8 コアに入っている。Drupal 8.2 では(実験的モジュールだったのが)非実験的モジュールへと一歩進み、アルファ版からベータ版になった。そして、Drupal 8.3 では安定版になった!
BigPipe 技術は Facebook で発明された。
(BigPipe を利用する場合)Drupal 8 コアに入っている Dynamic Page Cache モジュールも有効にすることを強く推奨する。
BigPipe デモ
仕組み
- レンダリングの際、パーソナライズされた(ユーザーによって異なる)部分は「プレースホルダー」(スペースを仮に確保しておくもの)に変換される。
- Drupal 8 は、そのプレースホルダーを置き換えるため、デフォルトでは(「従来型」と呼ばれる)シングル フラッシュ方法(ストラテジー)を使う。すなわち、すべてのプレースホルダーを置換してしまうまで応答を送信しない。
- BigPipe モジュールで導入された新しい方法では、まず、初期のページを吐き出してしまい、そのあとでプレースホルダーの置換内容をストリームすることができる。
- この結果、フロントエンド/知覚上のパフォーマンスが大幅に向上する(上記のスクリーンキャスト動画を参照:長さ 40 秒)。
機能
設定なしで高速化が実現!Drupal 8 で改良されたレンダー パイプラインとレンダー API、そして特にキャッシャビリティー メタデータとプレースホルダー自動化機能のおかげで、BigPipe は自動で高速化することができる。
Drupal 8 コア内の Page Cache および Dynamic Page Cache モジュールとの関係
- Page Cache (page_cache): BigPipe との関連はなし。
- Dynamic Page Cache (dynamic_page_cache): Dynamic Page Cache 内にページがキャッシュされている場合、BigPipe はメイン コンテンツをずっと高速に送信できる。それは、まさに BigPipe が送り出す必要のあるものが入っているため。
関連モジュール
- Sessionless BigPipe: ページ キャッシュがないときに BigPipe 技術を利用して高速化
- BigPipe demo: キャッシュ不可能な部分・パーソナライズされた部分のあるページを BigPipe が高速化するデモ
以下のモジュール・情報も参照(すべて英語)
- Drupal 8 レンダー パイプライン(The Drupal 8 render pipeline)
- レンダー アレイのキャッシャビリティー(キャッシュ可能度)
- プレースホルダー自動化機能 (Auto-placeholdering)
- Dynamic Page Cache モジュール
- JavaScript API in Drupal 8
- 動画:Drupal 8 のベスト機能(The Best Features of Drupal 8 - Bigpipe Caching)
- Podcast: BigPipe を使って Drupal 8 で信じられないほどのサイト高速化を実現する(Using BigPipe to Achieve Incredible Site Speed in Drupal 8 with Wim Leers)
- Podcast:「鮮度の落ちたコンテンツにはおさらば」("No More Stale Content" Drupal 8 Caching and Big Pipe with Wim Leers)
drupal.org からの記事の翻訳および Web 上でのその公開は、そのコンテンツが直接の翻訳であり、元著者が明記されているかぎり、Drupal Association によって許可されています。
Translation of any article from drupal.org and its publication on the Web is permitted by Drupal Association, provided the content is a direct translation and attributed to the original author.