使用ajax和django安全倒数计时器

时间:2010-12-07 04:20:36

标签: ajax django security timer

我正在尝试使用服务器端的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完成所有等待,那么操作变量并绕过倒计时将非常容易。但是,让服务器等待并不是最好的解决方案。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

这绝对是错误的做法。您将连接打开15秒,这意味着您必须能够在服务器上进行大量连接,即使在中等负载情况下也是如此。

相反,您应该拨打服务器,只需设置请求有效的时间,然后在客户端上进行倒计时。倒计时结束后,你调用服务器上的另一个函数,它会在发送文件(或者有关文件的信息)之前检查超时(如果为时太早则返回错误)