使用ajax和django实现安全倒计时

使用ajax和django实现安全倒计时,ajax,django,security,timer,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.

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

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


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

这样做肯定是错误的。您将连接保持打开状态15秒,这意味着您必须能够在服务器上建立大量连接,即使在负载适中的情况下也是如此


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

这显然是一种更好的方法。因此,如果理解正确,我应该有一个功能来设置到期日,另一个功能来检查它是否到期。谢谢他们可以在同一个功能。如果id未知,则进行新的超时并返回剩余的时间。如果已知id,返回剩余时间(如果有),否则返回下载链接。你只是想避免保持连接……这听起来确实是一个更好的方法。因此,如果理解正确,我应该有一个功能来设置到期日,另一个功能来检查它是否到期。谢谢他们可以在同一个功能。如果id未知,则进行新的超时并返回剩余的时间。如果已知id,返回剩余时间(如果有),否则返回下载链接。你只是想避免保持连接。。。