CMSなど利用せず、いわゆる静的なHTMLで作成するサイト案件でも、全てのページで共有するヘッダーやフッターなどはPHPが動作する環境であればincludeなどで読み込んで表示するという方法を取ることがあります。
で、そうした場合、パフォーマンスとしてどれぐらいの違いがあるのか、目安程度でよいのでちょっと測ってみました。
ちょうど案件で制作しているサイトで、include4箇所のページで計測しています。
とりあえず比較したものは
- PHPのinclude文で取り込んで表示するもの
- Handlebarsで取り込む箇所をHTMLに組み込んだ上で生成したもの
ということで、それぞれの比較は同じHTMLを出力するようにしました。
計測はabを利用して、iMacのローカル上のapache2(mod_php)、名前解決はhostsに記載しています。どちらもhtmlの拡張子でPHPが動作する環境です。
結果
5000リクエストで5回ほどそれぞれ計測しましたがこんな感じでした。
includeなし(全てHTML)
Requests per second: 591.99 [#/sec] (mean)
Time per request: 1.689 [ms] (mean)
includeあり(一部PHP)
Requests per second: 335.52 [#/sec] (mean)
Time per request: 2.980 [ms] (mean)
まあ、とうぜんincludeされる際にディスクの読み込みが発生するので、プログラムなしのincludeでも多少なりとも差が出てくるということですね。これがincludeの回数でまた変わってくるでしょうし、拡張子でPHPとして評価しないようにすればまた変わってくるかもしれません。
ま、当然ながら差があるよってことで。