经典ASP XMLHttp发送速度很慢

时间:2016-10-12 08:52:56

标签: vbscript asp-classic xmlhttprequest timing

我继承了一个经典的asp项目,作为升级过程的一部分,我们将很多业务逻辑转移到REST API(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

你可以在那里看到一些分析代码。

以下帖子请求需要392毫秒

POST localhost:5000/oauth/token
Content-Type application/x-www-form-urlencoded

client_id:ABCDEF0-ABCD-ABCD-ABCD-ABCDEF-ABCDEF01234
client_secret:aBcDeF0123456789aBcDeF0123456789=
username:demo
password:demo
grant_type:password

如果我通过Postman直接向Api发出相同的请求,则需要30ms。

这个速度慢了13倍。

是什么给出了?

修改

Softwing Profiler的原始结果:

flJson          10.9583865754112    
flSendRequest   392.282022557137    

1 个答案:

答案 0 :(得分:2)

所以在使用lengthy-ish discussion@J-Tolley之后,问题似乎是Softwing.Profiler documentation指出的问题;

  

所有结果均以毫秒为单位

尽管它在页面的前面说明了;

  

的分辨率为10毫秒

以前没有单独使用Softwing.Profiler组件,并建议使用Classic ASP环境中的任何人使用SlTiming class library提供的4GuysFromRolla来实现它。

that article中,它甚至会警告使用Softwing.Profiler ProfileStop()方法的任何人;

  

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