3

アプリケーションの初期化でhttp://www.google.comへの http 要求を見つけた J2ME アプリケーションを保守しています。Google にリクエストがある理由を開発者に尋ねました。彼は、この方法でアプリケーションが行う他のリクエストがより高速になると述べました。

google.com へのこのリクエストを削除したところ、他のリクエストが遅くなりました。

なぜこれが起こったのか誰か説明できますか?以前のリクエストを行わずに、他のリクエストを高速化するにはどうすればよいですか?

編集:

初期化時に Google にリクエストする:

  • 最初のリクエスト (初期化後) = 20 秒
  • 最初のリクエストを繰り返す = 5 秒

初期化時にリクエストを行わない場合:

  • 最初のリクエスト = 40 秒
  • 最初のリクエストを繰り返す = 5 秒
4

2 に答える 2

4

モバイル デバイスでは、Web 接続の開始に時間がかかり、MIDlet が実行されている間、JVM が接続を開いたままにすることがよくあります (最新の接続のほとんどは、バイト単位で課金されます - Edge、GPRS、WiFi)。そのため、startApp で接続が確立された場合、接続が開いたままになり、それ以降のすべての通信で接続を開く必要はなく、データを送信するだけであることがわかる場合があります。とても速く、より信頼できます。

この動作はプラットフォーム固有であり、MIDP2 ではこれが正しいとは規定されていません (したがって、Nokia と Samsung などは異なる場合があります)。

127.0.0.1 に接続しても、おそらく JVM はだまされず、オープンな GPRS 接続は必要ないと判断される可能性があります。ここでもプラットフォーム固有です。

ジェームズ

于 2009-06-10T15:31:49.113 に答える
2

...おそらく最初のリクエストは、デバイスのネットワーク層(*)を初期化し、おそらくjvmも初期化します。

私はそれがwww.microsoft.comでも動作すると確信しています:-)

*) これは、実行しているデバイスに依存すると思われます。何が起こっているのかわかりませんが、何かがあるかもしれません。例: ラジオ デバイスの開始、ネットワーク オペレータとのセッションの設定、jvm でのクラスのロードと開始。

Google の代わりに 127.0.0.1 に接続してみて、その後の試行が速くなるかどうかを確認してください。

アプリケーションが最初の実際の接続試行を行う前に時間がかかる多くの初期化を行っている場合は、接続試行を行う新しいスレッドを早期に開始できます。多分それは全体の待ち時間を減らすでしょう。

于 2009-05-26T19:05:28.180 に答える