我有一个网页,它使用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>
答案 0 :(得分:0)
经过数月的研究,我们得出结论,虽然这是一个非常简单的计划,但由于所比较的记录数量,它的效率非常低。
我最终将整个过程移动到数据库,现在只需运行存储过程来执行此任务。
感谢每个人的投入。
刚刚发现处理此服务器的服务器只有4GB内存并运行了CF服务器,数据库服务器,Web服务器,处理DNS和Active Directory