最近サービスのパフォーマンスにも興味があって、ハイパフォーマンスWebサイト読んだ。
この本ではサーバ側パフォーマンスチューニングについては殆ど書かれておらず、コンテンツのダウンロードやスクリプトの実行などを最適化するにはどうすればいいかについて書かれている。なぜサーバ側パフォーマンスについてあまり言及していないかというと、実際にユーザ側での速度計測をするとサーバサイドのパフォーマンスはその20%程度にしか影響を与えておらず、ほとんどがコンテンツのダウンロードなどに時間を取られているという調査があるためである。
この本は5年前に出版された本であり、もしかしたらパフォーマンスへの影響の比率などはもう少し変化しているかもしれないし、もしかしたら改善方法もほとんど結果にならない可能性もある。しかしそれを考慮に入れても、HTTPのヘッダによってどの程度変化するかや、cssやjsのパフォーマンスチューニングなど、非常に学ぶことが多かった。
以下、印象に残ったところについてまとめる。
HTTPでのExpires, Cache-Controlヘッダを適切に付ける
Expiresヘッダ、Cache-Controlヘッダを適切に付けることにより、ブラウザ等にレスポンスをキャッシュさせることが出来、その分次からはHTTPリクエストなしでコンテンツを読み込むことが出来る。特に画像などでは大きく効果が出そうに見える。
実際こういうのは基本レベルなのだけれど、実際にきちんと勉強したわけではなかったので印象に残った。
Expiresヘッダを遠い未来に設定し、queryなどを変えることによってキャッシュを使わないようにするなどの方法が例示されていた。
不適切なETagによるパフォーマンスの劣化
不適切なETagを出力することにより、Expiresヘッダを適切に出力していても、キャッシュが利用されなくなるらしい。特に複数サーバでサービスを利用している時に、inode値などがETagに入ったりするので、それによりETag出力がうまくいかないことがある。