在网页上使用资源

时间:2015-02-12 15:53:40

标签: javascript ajax performance coldfusion

我有一个网页,它使用javascript和ajax来调用处理一个数据库记录的另一个页面。在向页面发出另一个ajax请求之前,javascript使用计时器“休息”。

我的网络团队坚持认为,这会导致系统承受巨大的负担,即使您直接加载它所调用的页面需要不到一秒的时间才能加载。我没有看到我如何加载服务器。我不确定它是Web服务器还是数据库服务器在性能上受到了打击。

这是可能的还是吸烟好的东西?网络团队认为,由于它经常拨打电话,因此必须成为性能损失的罪魁祸首。

作为一种解决方法,我考虑过只调整处理记录的页面,每隔30秒刷新一分钟,这理论上与我使用ajax请求相同。我这样设置的唯一原因是能够进行开/关切换。

问题:它们是否正确,如何确保我的网页不会占用资源。

由于

这是javascript

        $(document).ready(function(){
    $("#btn-go").click(Start);
    $("#test").click(Stop);
});

var timer;
var counter = 0;
var timeOut = 30000;
var pause = 10000;
var bit = 0;
var data = null;
//stops the process
function Stop(){
    bit = 1;
    $("#response").append('<br/>***Stopped at - '+ getTime() + ' ***');
    $("#response").append('<br/>***Records Processed - '+ counter + ' ***');
}
//Starts the process
function Start(){
    bit = 0;
    $("#response").append('<br/>***Started at - '+ getTime()+ ' ***');
    Step1();
}

function Step1(){
    counter++;
    $.post('Step1.cfm', setTimeout(finalStep, timeOut));//,  setTimeout(Step2, timeOut));
    return false;
}

//Final Step
function finalStep(){
    //alert(getTime());
    $("#response").append('<br/>record updated at - '+ getTime());

    if(bit != 1)
        {
            Step1();

        }

}

function getTime()
{
    var now = new Date();
    var hours = now.getHours();
    var minutes = now.getMinutes();
    var seconds = now.getSeconds();
    var time = hours+":"+minutes+":"+seconds;
    return time;
}

处理记录的网页

<!--- the page checks the archive database table contact to see if any records match--->
<cfparam name="pblead" default="cfleadsource_prod">
<cfparam name="MARS" default="cfleadsource">

<cfquery name="GetRecord" datasource="#pblead#">
    select top 1 * from tmp_WirelessRepairListDec2014 where IsMatch = 1
    <!--- select * from contact where contactid = 2323924 --->
</cfquery>


<!-- check for phone matches-->
<cfquery name= "CheckPhone" datasource="cfLeadSourceArchive">
    select * from contact where phone='#GetRecord.phone#' or phone2 = '#GetRecord.phone#' or phone3 = '#GetRecord.phone#'
</cfquery>


<cfif CheckPhone.RecordCount eq 0><!--- no record found--->

    <!-- check for address matches-->
    <cfquery name="CheckAddress" datasource="cfLeadSourceArchive">
        select * from contact where mailingAddress = '#GetRecord.address#' or shippingAddress = '#GetRecord.locationAddress#'
    </cfquery>

        <cfif CheckAddress.RecordCount eq 0><!--- no record found set IsMatch to one for Archive Testing--->
            <cfquery name="SetForArchiveTest" datasource="#pblead#">
                update tmp_WirelessRepairListDec2014 set IsMatch = 2 where id = '#GetRecord.id#'
            </cfquery>

        <cfelse><!---address record found update database--->
            <!--update database 8 indicates that an address number matched-->
            <cfquery name="RecordFound" datasource = "#pblead#">
                update tmp_WirelessRepairListDec2014 set IsMatch = 8, cid = '#CheckAddress.contactid#', locationFound ='archive' where id = '#GetRecord.id#'
            </cfquery>
        </cfif>

<cfelse><!---phone record found update database--->
    <!--update database 9 indicates that a phone number matched-->
    <cfquery name="RecordFound" datasource = "#pblead#">
            update tmp_WirelessRepairListDec2014 set IsMatch = 9, cid = '#CheckPhone.contactid#', locationFound ='archive' where id = '#GetRecord.id#'
    </cfquery>
</cfif>

主要网页

<html>
<head>
<!--include link to jquery files-->
<script src="jquery-2.1.3.min.js"></script>
<!--<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>-->
<script src="CheckArchive.js"></script>

</head>
<body>
<h3>Check list against archive for Wireless list</h3>
<button id="btn-go">Start</button><button id="test">Stop</button>
<hr/>
<div id="response"></div>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

经过数月的研究,我们得出结论,虽然这是一个非常简单的计划,但由于所比较的记录数量,它的效率非常低。

我最终将整个过程移动到数据库,现在只需运行存储过程来执行此任务。

感谢每个人的投入。

刚刚发现处理此服务器的服务器只有4GB内存并运行了CF服务器,数据库服务器,Web服务器,处理DNS和Active Directory