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に任せられるみたいなので、そこも良いなと思いました。

- 閲覧数 24
コメントを追加