Hatena::Groupandroid

keigoiの日記

 | 

2010-02-14

Androidのwebブラウザにおけるhttpsリダイレクト時のパフォーマンス悪化

20:56

先日の WebViewを使ったスクレイピング に引き続き。

WebViewのパフォーマンスを調査していたのだが,HTTPSでリダイレクトが発生する場合に 非効率な振る舞いを発見した。

これは Android の ブラウザでも同様だと思うので、開発者に改善を提案したい。

WebView httpsリダイレクト時の挙動

HTTP over SSLにおけるコネクション確立では、証明書の検証が必要である。検証にはそれなりの時間計算量を必要とする。Apache HttpClient では、同一サーバーに対するHTTPSのリダイレクト時には証明書の検証ステップを省略するようだ。これは traceview で確認した。

しかしながら、 WebView で同じサイトに接続すると、リダイレクトの度に証明書を検証している。

これは非常に非効率的なので、セキュリティ上の理由が無いのであれば改善されるべきだろう。

パフォーマンス プロファイル

imode.net のモバイルモードは ログイン時に リダイレクトが 4回 発生する。

Debug.startMethodTracing で取得したトレースを次の図に示す。

f:id:keigoi:20100214205149p:image

リダイレクトの度に、 http0-3 のスレッドがデータをやり取りしている。

各スレッドが、毎回 TrustManagerImpl#checkServerTrusted を呼び出しており、それが実行時間の約半分を占めているように見える。

トラックバック - http://android.g.hatena.ne.jp/keigoi/20100214
 |