0

3G ネットワーク上のサーバーへの ping は 80 ミリ秒で、Wifi とほぼ同じ (60 ミリ秒) ですが、SSL 接続をセットアップする時間は 3G で 3.5 秒、Wifi で 0.5 秒です。これは、ラップトップと iPhone の両方をクライアントとして使用しても同じです。

3G タワーはビジーではありません。インターネット接続は基本的にアイドル状態です。

電話をWifiで実行し、サーバーへの70ミリ秒のpingを実行すると、接続ハンドシェイク時間は6倍速くなり、約0.5秒になります.sslハンドシェイクの詳細を考えると、これはほぼすべてです.

これは正常ですか?バージニア州のAWS(heroku)にある1つのサーバーでのみテストしました。これは、オフィスからWifiで約50ミリ秒のpingです。いずれの場合も、サーバーは約 40 ミリ秒で 10kB のデータを構築して応答します。

3Gってそんなに遅いの?または、ハンドシェイクを高速化するために NSURLConnection などにできる調整はありますか?

これは、リクエスト間でスリープしている 3G ラジオですか? - そうは思いません。3G ラジオを ping でオンにし続けても、(たとえば) 同じことが起こります。

4

1 に答える 1

0

私は実際、これが答えであると100%確信しているわけではありません。

バッテリーを節約するために、電話の GSM セルラー無線はできるだけオフにします。アプリを起動すると、Web リソースを要求するとすぐにラジオがオンになります。1秒くらいかかる?(これについてはわかりません)ラジオを起動します。

そのため、改善するのは難しいです。これまでに見つけた唯一のことは、main.m で NSURLConnection を使用することです。デリゲートは設定されていません。これにより、約 0.3 秒高速化されました。これは、実際にオンラインにしたいコードのポイントに到達するのにかかる時間です。

実際にオンラインにする必要がない場合、これはバッテリーを浪費することに注意してください!

    // warm up the radio ASAP. It seems to take over a second for the radio to turn on.
    // This saves about a quarter of a second or so. 404 is typically a fast easy response for a server. 
    NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://yoursite.com/wedonthavethis/"]];
    [NSURLConnection connectionWithRequest:request delegate:nil];
于 2012-09-11T16:17:02.090 に答える