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

我删除了对 google.com 的此请求,其他请求变得更慢。

谁能解释为什么会发生这种情况?如何在不发出先前请求的情况下使其他请求更快?

编辑:

在初始化时向 google 发出请求:

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

在初始化时不发出请求:

  • 第一个请求 = 40 秒
  • 重复第一个请求 = 5 秒
有帮助吗?

解决方案

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

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

连接到 127.0.0.1 可能不会欺骗 JVM,它可能会决定不需要开放的 GPRS 连接。再次是平台特定的。

詹姆士

其他提示

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

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

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top