使用ajax检查下载时间

Check download time with ajax?

本文关键字:时间 下载 检查 ajax 使用      更新时间:2023-09-26

我想下载一个512kb的文件,并检查下载时间。我使用以下代码,但它检查只是网站的响应时间,而不是等到整个文件下载。如何查看整个文件下载时间?

var start = new Date();  
$.ajax ({
    url: 'https://www.example.com/512kb',
    cache: false,
    success : function()
    {
        var total=(new Date() - start)  
    },
    error : function(jqxhr, status, ex) {}   
});

编辑:当我在本地PC上运行网站时,internet explorer等待所有文件下载,Firefox和chrome没有。如果我把所有的服务器行为相同,而不是等待所有的文件。为什么只在本地internet explorer是这样的?

看起来您没有使用total变量做任何事情。因为它是在success回调函数中定义的,所以它只存在于该函数中,因此在函数返回时丢失。

下面的代码显示了一个警告框,其中包含完成ajax调用所需的时间和检索到的数据的长度:

var start = new Date();
var total;
$.ajax ({
    url: 'http://fiddle.jshell.net/',
    cache: false,
    success : function(data)
    {
        total=(new Date() - start);
        alert('total: ' + total + ' len: ' + data.length);
    },
    error : function(jqxhr, status, ex) {}   
});
http://jsfiddle.net/WkKE2/2/

在javascript中没有办法做到这一点。但是你会在这个stackoverflow问题中找到一些解决方法:当下载的文件保存到磁盘时浏览器事件

编辑:这个stackoverflow问题有一个更好更简单的答案:检测何时"文件下载"。基本上你的目标是下载链接到一个隐藏的iframe在你的页面,并使用onload事件的这个iframe