经典ASP:如何加快向客户提供内容?

时间:2013-04-02 09:36:05

标签: ajax asp-classic vbscript

我正在维护一个经典的ASP应用程序。它有一些报告,其中很少有大约25列和大约600行。我通过AJAX调用将数据从服务器返回给客户端并显示结果。

我所做的是为表格创建一个HTML字符串,其中包含服务器端的标题和行(使用字符串连接),并在最后执行response.write

if not rsStatus.eof then
        strresult=strresult & "<table class='sort-table' id='table-1'><thead><tr class='gridHeader' style='height:15px;'>"
        strresult=strresult & "<td>S.N.</td>"
        strresult=strresult & "<td>TSPL Job No.</td>"
        strresult=strresult & "<td>Client Name</td>"
        strresult=strresult & "<td>Job Type</td>"
        strresult=strresult & "<td>Govt Office</td>"
        strresult=strresult & "<td>Ref Value</td>"
        strresult=strresult & "<td>Govt File No.</td>"
        strresult=strresult & "<td>Submission Date</td>"
        strresult=strresult & "<td>Days Elasped Since Filing Date</td>"
        strresult=strresult & "<td>Process-Cycle/Status stage</td>"
        strresult=strresult & "<td>Status/  Remarks</td>"
        strresult=strresult & "<td>Status Last Updated on</td>"
        strresult=strresult & "<td>Trigon Bill No</td>"
        strresult=strresult & "<td>Trigon Bill Date</td>"
        strresult=strresult & "<td>Payment Received / Pending</td>"
        strresult=strresult & "</thead></tr><tbody>"
        dim rownum
        rownum = 1
        while not rsStatus.eof
            strresult=strresult & "<tr class='gridrow " & IIf(rownum Mod 2=1,"bgodd","bgeven") &"'>"
            strresult=strresult & "<td>" & rownum & "</td>"
            strresult=strresult & "<td><a href='http://localhost/app/global/weblets/Jobdetails.asp?JobId=" & rsStatus("iJobId") & "' target='new'>" & rsStatus("vJobNo") & "</a></td>"
            strresult=strresult & "<td>" & rsStatus("Client") & "</td>"
            strresult=strresult & "<td>" & rsStatus("vJobType") & "</td>"
            strresult=strresult & "<td>" & rsStatus("GovtOffice") & "</td>"
            strresult=strresult & "<td>" & rsStatus("RefVal") & "</td>"
            strresult=strresult & "<td>" & rsStatus("FileNo") & "</td>"
            strresult=strresult & "<td>" & rsStatus("SubmitedOn") & "</td>"
            strresult=strresult & "<td>" & rsStatus("elapsed") & "</td>"
            strresult=strresult & "<td>" & rsStatus("CurrentStatus") & "</td>"
            strresult=strresult & "<td>" & rsStatus("comment") & "</td>"
            strresult=strresult & "<td>" & rsStatus("dStatusDate") & "</td>"
            strresult=strresult & "<td>" & rsStatus("BillNo") & "</td>"
            strresult=strresult & "<td>" & rsStatus("BillDate") & "</td>"
            strresult=strresult & "<td>" & rsStatus("PymtStatus") & "</td>"
            strresult=strresult & "</tr>"
            rownum = rownum+1
            rsStatus.movenext
        wend
        strresult=strresult & "</tbody></table>"
    else
        strresult=strresult & "<tr class='gridrow'><td colspan=3>No Status Present for the Job</td></tr>"
    end if
    Response.Write(strresult)

由于行数没有增加,性能不是很好。

什么是更好的方法呢?

3 个答案:

答案 0 :(得分:2)

VBScript中的字符串连接性能非常差,您可以尝试使用those articles中描述的方法来改进脚本。

最简单的情况是创建一个包含所有字符串的数组,然后调用Join将它们连接起来。

希望有所帮助

答案 1 :(得分:1)

无需构建字符串,只需写出行。

e.g。

<% if not rsStatus.eof then %>
        <table>
            <tr>
                <td>S.N.</td>
            </tr>
        </table>
<% end if %>

答案 2 :(得分:0)

我想在这里添加一个自己问题的答案,因为这给了我一个很好的性能提升。

我将我的SQL查询转换为每个列的for xml个查询,因为&#39; td&#39;像这样:

Select col1 as [td], col2 as [td], col3 as [td] from table for xmpl path('tr'), root('table')

并将结果返回给浏览器,几乎没有处理ASP服务器端代码。