Vbscript 经典的ASP XMLHttp发送速度非常慢

Vbscript 经典的ASP XMLHttp发送速度非常慢,vbscript,asp-classic,xmlhttprequest,timing,Vbscript,Asp Classic,Xmlhttprequest,Timing,我继承了一个经典的asp项目,作为升级过程的一部分,我们将许多业务逻辑转移到RESTAPI(WebApi 2.2)上 api的授权端点是编写的,asp站点可以调用它,但是与通过Postman直接调用相比,它的速度非常慢 (我是一名C#编码员,不是VBScript编码员,因此下面的代码可能令人反感) Asp代码: ' Send a prebuilt HTTP request and handle the response ' Returns true if the request returns

我继承了一个经典的asp项目,作为升级过程的一部分,我们将许多业务逻辑转移到RESTAPI(WebApi 2.2)上

api的授权端点是编写的,asp站点可以调用它,但是与通过Postman直接调用相比,它的速度非常慢

(我是一名C#编码员,不是VBScript编码员,因此下面的代码可能令人反感)

Asp代码:

' Send a prebuilt HTTP request and handle the response
' Returns true if the request returns a 200 response, False otherwise 
' Response body is placed in Response
' ErrorMessage is set to return status text if an error code is returned  

Function HandleRequest(ByRef objRequest, strBody)
    set profiler = Server.CreateObject("Softwing.Profiler")
    HandleRequest = False

    ' Add auth token if we have it
    If Not m_accessToken&"" = "" Then
        objRequest.SetRequestHeader "Authorization", "Bearer " & m_accessToken 
    End If

    ' Originating IP for proxy forwarding
    If Not m_clientIp&"" = "" Then
        objRequest.SetRequestHeader "X-Forwarded-For", m_clientIp
    End If

    On Error Resume Next


    If (strBody&"" = "") Then
        objRequest.Send()
    Else
        profiler.ProfileStart()
        objRequest.Send(strBody)
        flSendRequest = profiler.ProfileStop()
    End If


    If Err.Number = 0 Then
        Dim jsonResponse

        If (objRequest.ResponseText&"" <> "") Then
            profiler.ProfileStart()
            set jsonResponse = JSON.parse(objRequest.ResponseText)
            flJson = profiler.ProfileStop()
            set m_Response = jsonResponse
        End If

        If objRequest.Status = 200 Then
            HandleRequest = True
            m_errorMessage = ""
        Else
            m_errorMessage = objRequest.statusText
        End If
    Else
        m_errorMessage = "Unable to connect to Api server"
    End If
    On Error GoTo 0
End Function
如果我通过邮递员直接向Api发出相同的请求,则需要30毫秒

这比13倍还要慢

有什么好处

编辑

来自Softwing Profiler的原始结果:

flJson 10.9583865754112
flSendRequest 392.282022557137
所以,在一段时间后,问题似乎在于哪个州

所有结果以毫秒为单位

即使它在页面的前面陈述

分辨率为10毫秒

以前没有单独使用过
Softwing.Profiler
组件,建议在经典ASP环境中使用的任何人使用提供的实现它

它甚至警告任何使用
Softwing.Profiler
ProfileStop()
方法的人

请注意,Softwing.Profiler的
ProfileStop
方法返回一个以滴答(十分之一毫秒)为单位的值


您是每次都从同一台机器发出请求,还是ASP代码驻留在与Postman不同的地方?要使其成为有效的测试,您需要从同一位置运行这两个测试。还请记住,COM探查器将为代码执行增加少量开销。还怀疑这是所有的ASP代码运行时,你调用ASP页。同一台机器。一切都在本地完成。我还认为会有一个探查器开销,但这似乎太多了。(首先运行探查器的原因是正常运行时速度明显不同)您是否有
Softwing.profiler
中针对
objRequest.Send(strBody)
部件的原始计时?我以前没有使用过原始档案器,我一直使用它包装了一个名为的库,它允许你更多地控制时间和生成摘要。在上面的编辑中添加了它们。我停顿了一会儿,因为SlTiming库说Softwing的计时是十分之一毫秒(所以我可能忘了除以10)。但是他们说计时是ms。所以澄清一下,
SlTiming
是正确的,但是
Softwing.Profiler
是错误的。如果使用
.ProfileStop()
请记住返回的值是以滴答(十分之一毫秒)为单位的。很高兴我能帮忙。