LoginSignup
5
3

More than 5 years have passed since last update.

nginx1.12.2でもhttp/2 Server Pushに対応していたという事実

Posted at

http/2 Server Pushの導入

 技術系情報掲載システムのレスポンスを少しでも上げようと、http/2 Server Pushを導入してみた。CentOS7の場合、無設定のyumだとnginxの1.12.2が入る。Web上の情報を参照すると対応は1.13.9以降なので、リポジトリ設定を変更し最新版をインストールした。結果、バージョンは1.15.2となった

 その後、Server Pushのためのプログラムの追加作業を行う。コンテンツ中に含まれる画像リンクを元に、linkヘッダを吐き出すようにした

結果

 システムはSPA(Single Page Application)で、データはAjaxを利用して送信している
 最初にあるttisが画像のリンクを含んだテキストデータを送信しており、linkヘッダの添付もここで行っている
 結果だけ見るとAjaxでのやりとりでもServer Pushは正常に動作するようだ

linkヘッダを付けない場合

image.png

linkヘッダを追加した場合

image.png

 linkヘッダ付けない場合は画像のアドレスをブラウザが受け取り、再度サーバに要求する形になる。そのためttisがデータを受け渡した後、ラグが発生する。linkヘッダを付けた場合は、ttisのテキストコンテンツ送信終了直後に画像の送信が始まっている。30ms程度ではあるが、確実に総合的な時間が短くなっている

本番サーバに適用

 テストがうまくいったので、本番サーバにデプロイする。gitでpullするだけの簡単な作業だ。本番サーバのnginxのバージョンは1.12.2なので、こちらもアップデートをかけなければならない・・・と思っていた

 とりあえずアップデート前にデプロイの状態を確認するため、普通に動かしてみた。するとnginx1.12.2の状態でも、テストサーバでlinkヘッダを追加した場合と同じ動きをしている

 ちょっ、これって前から対応してた?

 試しに本番サーバのlinkヘッダ出力をいじって、存在しない画像のIDを設定してみる

image.png

 明らかにlinkヘッダに反応している。つまりnginxのバージョンを上げなくても、Server Pushは使えるということだ

 しかしぐぐってみても、1.13.9で対応したという話ばかりだ

まとめ

 バージョン・・・いや、別にいいんだけど、なんか釈然としない

 実際にシステムを操作してみると、画像表示までの一瞬のラグが消え、たかが30msでも意外に体感できるものなのだという結果だった

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3