Drupal10で標準組み込みになっているBigPipeという考え方の枠組みについて

  •  
 
MAXIMUM に投稿

タグ

1.背景

DrupalはFacebookが提唱したPHPのBigPipe技術を使ってHTMLページを生成しているようです。※似たようなものにAjaxがあります。
今回はそこに焦点を当ててみようかと思います。

2.よくある一括送信タイプの場合

先ずはWordPress等のよくあるブログ作成の場合どうなっているかを見ていきます。下記手順になります。
 ユーザがページにアクセス
→PHPが上から順番にプログラムを実行し、ページの全HTMLをメモリ上に完成
→完成したHTMLを一括でブラウザに送信

このやり方だと、ページ内に1箇所でも重いデータがあると処理が終わるまで、ユーザーは待たされることになります。

3.BigPipeの場合

BigPipeの場合は2フェーズ分割して生成します。
先に軽い骨組みを生成して、ユーザに見せた後、裏で更新し続けるといった具合で待ち時間を減らす工夫をしています。
ページ更新にはDrupal標準モジュールのbig_pipe.jsが使われています。

4.コード記述に関して

ブログ作成する際にBigPipeを意識することは実はありません。
下記のようなトリガーを用意すれば『core/modules/big_pipe/js/big_pipe.js』が動いてページ生成されます。
$uid = (int) $this->currentUser->id();
$submission = $this->getSubmission($uid, (int) $event->id());
'#default_value' => ($uid === 1) ? NULL : ($submission->attendance ?? NULL);

5.まとめ

なんでもかんでもAjaxでブログ作成ではなく、こういった分割生成する技術を使用することによって、より使いやすいブログ作成が可能なのかなと思いました。
またセキュリティ周りについてもAjaxと違ってDrupalに任せられるみたいなので、そこも良いなと思いました。

コメントを追加

プレーンテキスト

  • HTMLタグは利用できません。
  • 行と段落は自動的に折り返されます。
  • ウェブページのアドレスとメールアドレスは自動的にリンクに変換されます。
CAPTCHA
この質問はあなたが人間の訪問者であるかどうかをテストし、自動化されたスパム送信を防ぐためのものです。