jQuery AJAX在Firefox中很慢,在IE中很快

时间:2009-06-24 16:36:47

标签: asp.net asp.net-ajax jquery asmx

我正在使用jQuery发布到ASP .NET Web服务来实现自定义自动完成功能。代码效果很好,除了它在FireFox中速度慢(不能让它超过1秒)。 IE非常快 - 效果很好。我使用Firebug在Firefox中观看帖子。

这是服务代码:

<ScriptService(), _
WebService(Namespace:="http://tempuri.org/"), _
WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1), _
ToolboxItem(False)> _
Public Class TestWebSvc
  Inherits System.Web.Services.WebService

  <WebMethod(), _
  ScriptMethod(ResponseFormat:=Script.Services.ResponseFormat.Json, UseHttpGet:=True)> _
  Public Function GetAccounts(ByVal q As String) As Object

    'Code taken out for simplicity

    Return result

  End Function

End Class

jQuery ajax调用:

$.ajax({
    beforeSend: function (req) { req.setRequestHeader("Content-Type", "application/json"); },
    contentType: "application/json; charset=utf-8",
    type: "GET",
    url: "http://localhost/Suggest/TestWebSvc.asmx/GetAccounts",
    data: "q='" + element.val() + "'",
    dataType: "json",
    success: testWebSvcSuccess
  });

正如您所看到的,我尝试使用HTTP GET动词,希望这会使调用更快。但事实并非如此,如果可以,我可能会将其切换回使用POST。现在我只关注为什么它在IE中速度超快,在Firefox中速度超慢。

版本:jQuery 1.3.2; Firefox 3.0.11; IE 8.0.6001.18783(64位)

感谢您提供的任何见解。

5 个答案:

答案 0 :(得分:4)

我知道我在这个问题上迟到了,但我不得不处理类似的情况。原来“问题”是使用http://localhost而不是127.0.0.1

使用任一URL快速执行IE。 FF使用IP地址很快,但使用localhost增加了1秒的延迟。

答案 1 :(得分:2)

因此,我没有在Visual Studio中点击“运行”,而是在IIS中创建了一个应用程序,并从那里访问了页面 - 现在它在FireFox和IE中都运行得很快。奇怪......我对此仍然有点警惕 - 我有一种感觉,这可能会回来困扰我某个地方,但现在看起来问题已经解决了。

答案 2 :(得分:1)

我敢打赌IE正在缓存它。出于某种原因,IE is a little more aggressive(旧帖子,但我仍然看到问题)在缓存方面,这可能也不例外。尝试并运行一些健全性检查,看看它是否真正缓存它。

答案 3 :(得分:1)

对不起,我也迟到了这个问题。 Cassini(VS Web服务器)+ Firefox已经知道任何服务器请求的性能问题(不仅仅是ajax / webservice请求)。 127.0.0.1解决方案是一个修复 - 另一个是更改firefox中的设置:

http://blog.anofsinger.com/2007/08/firefox-slowness-with-cassini-vs-web.html

答案 4 :(得分:0)

你有没有理由使用beforeSend:?

您可以将内容类型设置为选项,如下所示:

contentType:“application / json; charset = utf-8”

另外,为什么不将web方法的url设为相对或绝对?我怀疑完整的uri会有所作为,但你永远不会知道。