Asp.net jQuery AJAX在Firefox中速度慢,在IE中速度快
我正在使用jQuery发布到ASP.NETWeb服务,以实现自定义的自动完成功能。除了FireFox中的速度慢(不能让它超过1秒)之外,代码工作得很好。IE的速度非常快,效果非常好。我用Firebug在Firefox上看了这篇文章 以下是服务代码:Asp.net jQuery AJAX在Firefox中速度慢,在IE中速度快,asp.net,asp.net-ajax,jquery,asmx,Asp.net,Asp.net Ajax,Jquery,Asmx,我正在使用jQuery发布到ASP.NETWeb服务,以实现自定义的自动完成功能。除了FireFox中的速度慢(不能让它超过1秒)之外,代码工作得很好。IE的速度非常快,效果非常好。我用Firebug在Firefox上看了这篇文章 以下是服务代码: <ScriptService(), _ WebService(Namespace:="http://tempuri.org/"), _ WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile
<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
正如您所看到的,我尝试使用HTTPGET动词,希望这样可以加快调用速度。如果可能的话,我可能会将它切换回使用POST。现在我只关注为什么它在IE中超快而在Firefox中超慢
版本:jQuery 1.3.2;火狐3.0.11;IE 8.0.6001.18783(64位)
感谢您提供的任何见解。我敢打赌IE正在缓存它。出于某种原因,(以前的文章,但我仍然看到这个问题),当涉及到缓存时,这可能也不例外。试着运行几个健全的检查,看看它是否真的在缓存它 您使用beforeSend:有什么原因吗 您可以将内容类型设置为一个选项,如下所示: contentType:“应用程序/json;字符集=utf-8”
另外,为什么不将web方法的url设置为相对的或绝对的?我怀疑完整的uri是否会有所不同,但你永远不知道。因此,我没有在Visual Studio中点击“Run”,而是在IIS中创建了一个应用程序,并从那里访问了页面-现在它在FireFox和IE中都能快速工作。奇怪。。。我仍然对此有点担心——我有一种感觉,这可能会再次困扰我,但现在看来问题已经解决了。我知道这个问题我来晚了,但我不得不处理类似的情况。原来“问题”是使用了而不是127.0.0.1
IE使用任意一个URL都执行得很快。FF使用IP地址时速度很快,但使用localhost时增加了1秒的延迟。对不起,我回答这个问题太晚了。Cassini(VS Web服务器)+Firefox已知任何服务器请求(不仅仅是ajax/webservice请求)的性能问题。127.0.0.1解决方案是一个修复方案-另一个是更改firefox中的设置:
当您暂停或禁用firebug时,是否仍然很慢?我注意到使用firebug会对性能产生严重影响。是的,即使禁用firebug,速度也一样慢。是的,这是可能的。对于GET请求,缓存在默认情况下是正确的。当我改用POST时,IE仍然很快,Firefox仍然很慢。我禁用了缓存,得到了相同的行为。哇,很有趣。我也遇到了同样的问题,但是如果在VS.FF(还有Chrome)中运行MVC+ExtJS应用程序,当IE处于即时状态时,它永远不会在不到1秒的时间内返回Ajax帖子。我花了几个小时试图弄明白这一点,直到我找到了这条线索。安装到IIS中,现在它在所有浏览器中都很流行。我认为微软已经以某种方式优化了VS+IE组合(令人震惊…)。谢谢你——我真的很害怕我的应用程序会无法使用。非常感谢你的回答——解决了我已经忍受了好几天的问题
$.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
});