我正在尝试使用服务器端的ajax和django制作类似于rapidshare中的倒数计时器。
我的ajax电话如下:
function loadXMLDoc(url,cfunc){
if (window.XMLHttpRequest){
xmlhttp=new XMLHttpRequest();
}else{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=cfunc;
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
function getFile(){
countdown(15);//just shows the counter
loadXMLDoc("getfiles",function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
document.getElementById("dlzone").innerHTML=xmlhttp.responseText;
}
});
}
在服务器端我有一个测试功能:
def getfile(request):
sleep(15)
return HttpResponse("file")
一切都按预期工作,除了它让我想知道是否有更好的方法使服务器睡眠15秒。如果我使用javascript完成所有等待,那么操作变量并绕过倒计时将非常容易。但是,让服务器等待并不是最好的解决方案。有什么建议吗?
答案 0 :(得分:3)
这绝对是错误的做法。您将连接打开15秒,这意味着您必须能够在服务器上进行大量连接,即使在中等负载情况下也是如此。
相反,您应该拨打服务器,只需设置请求有效的时间,然后在客户端上进行倒计时。倒计时结束后,你调用服务器上的另一个函数,它会在发送文件(或者有关文件的信息)之前检查超时(如果为时太早则返回错误)