mineoの通信の最適化を検証してみた
May 5, 2018
TL;DR
- いまさらではあるが、mineoの通信の最適化を検証してみた。
- 検証結果をtweetしたところ、高木先生にRetweetされてしまったので、 検証データを公開することにした。
- mineoは、画像サイズが500kByte程度以下であれば、圧縮を行う。
検証方法と結果
NASAより画像を入手し、IDCFにたてたWeb Serverを使い mineo経由でダウンロードし、ダウンロードサイズをオリジナル画像サイズと比較した。
以下の2つの画像で検証を行った。
左の画像は、太陽表面の紫外線画像で、中心付近に磁力線が良く見えている。 右は土星の輪の画像で、カッシーニが2009年8月に撮影したものである。
結果は以下の通りであった。
画像 | オリジナルのサイズ | ダウンロードサイズ |
---|---|---|
太陽 | 427340 Byte | 189769 Byte |
土星の輪 | 975046 Byte | 975046 Byte |
太陽の画像が、大きくファイルサイズが減少している ことから、先達が検証されていたとおり、画像が圧縮されて 転送されていることが検証された。
画像が圧縮される条件
しかし、同時に土星の輪のファイルサイズに変化がないことがわかる。
mineoが、画像の内容で圧縮の有無を決定しているとは考えにくい。 おそらく、HTTPのContent-Lengthヘッダを使って画像ファイルのサイズ を取得し、圧縮の判断に使用しているのではないかと仮説をたて、 土星の輪の画像を縮小しファイルサイズを変化させながら 転送サイズと比較することで、検証を行った。
その結果を以下に示す。
縮小率 | オリジナルのサイズ[Byte] | ダウンロードサイズ[Byte] |
---|---|---|
75% | 645580 | 645580 |
70% | 559234 | 559234 |
69% | 541969 | 541969 |
68% | 527228 | 527228 |
67% | 509256 | 30760 |
66% | 493607 | 29855 |
65% | 479741 | 29307 |
60% | 404758 | 25729 |
50% | 273096 | 18984 |
ここで縮小率は、Imagemagickのconvertコマンドの-rezizeオプションに 指定した値である。
縮小率68%までは、圧縮されること無く転送されているが、 67%を境に大きくダウンロードサイズが減少し、圧縮されている事がわかる。 よって縮小率67%と68%間、すなわち509kByteと527kByteの間に 閾値があり、mineoはこの閾値以下であれば圧縮をかけていると思われる。
感想
検証はここでやめてしまったが、閾値はおそらく512kByteかな。
というか、ファイルサイズが小さい画像を圧縮するのか… ファイルサイズが大きいものを圧縮するもんだと思っていた。
あと、表が見にくい…Style Sheet修正しなきゃ。