2009-05-26 44 views
3

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

我将此请求移除至google.com,其他请求速度变慢。

任何人都可以解释为什么发生这种情况?如何在不提出以前的请求的情况下更快地提出其他请求?

编辑:

制作请求在初始化到google:

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

未做初始化请求:

  • 第一请求= 40秒
  • 重复第一请求= 5秒
+0

所有后续请求都比较慢?或者只是第一个? – 2009-05-26 19:19:34

+0

编辑的问题与每个请求的大致时间 – 2009-05-26 19:51:13

+0

为什么你真的担心提出第一个要求? – KarlP 2009-05-27 07:21:58

回答

4

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

这种行为是特定于平台的,MIDP2没有规定这是真实的(所以Nokias可能不同于三星等)。

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

James

2

...也许第一请求初始化在装置中的网络层(*)和也许还有JVM。

我相信它www.microsoft.com工作太:-)

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

尝试连接到127.0.0.1而不是谷歌,看看是否使后来的尝试更快。

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