我正在使用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位)
感谢您提供的任何见解。
答案 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会有所作为,但你永远不会知道。