mineoの通信の最適化を検証してみた

May 5, 2018

TL;DR

検証方法と結果

NASAより画像を入手し、IDCFにたてたWeb Serverを使い mineo経由でダウンロードし、ダウンロードサイズをオリジナル画像サイズと比較した。

以下の2つの画像で検証を行った。

左の画像は、太陽表面の紫外線画像で、中心付近に磁力線が良く見えている。 右は土星の輪の画像で、カッシーニが2009年8月に撮影したものである。

結果は以下の通りであった。

画像オリジナルのサイズダウンロードサイズ
太陽427340 Byte189769 Byte
土星の輪975046 Byte975046 Byte

太陽の画像が、大きくファイルサイズが減少している ことから、先達が検証されていたとおり、画像が圧縮されて 転送されていることが検証された。

画像が圧縮される条件

しかし、同時に土星の輪のファイルサイズに変化がないことがわかる。

mineoが、画像の内容で圧縮の有無を決定しているとは考えにくい。 おそらく、HTTPのContent-Lengthヘッダを使って画像ファイルのサイズ を取得し、圧縮の判断に使用しているのではないかと仮説をたて、 土星の輪の画像を縮小しファイルサイズを変化させながら 転送サイズと比較することで、検証を行った。

その結果を以下に示す。

縮小率オリジナルのサイズ[Byte]ダウンロードサイズ[Byte]
75%645580645580
70%559234559234
69%541969541969
68%527228527228
67%50925630760
66%49360729855
65%47974129307
60%40475825729
50%27309618984

ここで縮小率は、Imagemagickのconvertコマンドの-rezizeオプションに 指定した値である。

縮小率68%までは、圧縮されること無く転送されているが、 67%を境に大きくダウンロードサイズが減少し、圧縮されている事がわかる。 よって縮小率67%と68%間、すなわち509kByteと527kByteの間に 閾値があり、mineoはこの閾値以下であれば圧縮をかけていると思われる。

感想

検証はここでやめてしまったが、閾値はおそらく512kByteかな。

というか、ファイルサイズが小さい画像を圧縮するのか… ファイルサイズが大きいものを圧縮するもんだと思っていた。

あと、表が見にくい…Style Sheet修正しなきゃ。