3

我正在维护一个 J2ME 应用程序,在该应用程序初始化中发现了对http://www.google.com的 http 请求。我问开发者为什么会有谷歌的请求。他说这样应用程序发出的其他请求会更快。

我将此请求删除到 google.com,其他请求变慢了。

谁能解释为什么会这样?如何在不发出先前请求的情况下更快地发出另一个请求?

编辑:

在初始化时向谷歌发出请求:

  • 第一次请求(初始化后)= 20 秒
  • 重复第一个请求 = 5sec

没有在初始化中提出请求:

  • 第一个请求 = 40 秒
  • 重复第一个请求 = 5sec
4

2 回答 2

4

在移动设备上启动 Web 连接需要一些时间,并且 JVM 通常会在 MIDlet 运行期间保持连接打开(大多数现代连接按字节收费 - Edge、GPRS、WiFi)。因此,如果在 startApp 上建立了连接,您可能会发现连接将保持打开状态,并且所有进一步的通信都不需要打开连接,只需发送数据。如此快速,更可靠!

这种行为是特定于平台的,MIDP2 没有规定这是真的(因此诺基亚可能与三星等不同)。

连接到 127.0.0.1 可能不会欺骗 JVM,它可能会决定它不需要为此打开 GPRS 连接。再次特定于平台。

詹姆士

于 2009-06-10T15:31:49.113 回答
2

...也许第一个请求会初始化设备中的网络层(*),也可能是 jvm。

我相信它也适用于 www.microsoft.com :-)

*)我怀疑这取决于您运行的设备。我不知道发生了什么,但可能有什么。例如:启动无线电设备,与网络运营商建立会话,在 jvm 中加载和启动类。

尝试连接到 127.0.0.1 而不是 google,看看这是否会使以后的尝试更快。

如果应用程序在进行第一次真正的连接尝试之前需要一段时间进行大量初始化,您可以提前启动一个新线程来进行连接尝试。也许这会减少总的等待时间。

于 2009-05-26T19:05:28.180 回答