0

我有一个脚本女巫将 txt 文件中的 url 放入 iframe,然后检查每个源的加载时间。如果我的 txt 文件中有 4 个 url,我会得到 3 个结果,这对我来说已经足够了,但 1 个结果总是太短(说帧在 0,016 秒左右加载,而其他帧加载需要 1-4 秒)。如果我从列表中删除其他 url,只留下一个给出错误值的 URL,然后运行我的脚本 - 我会得到一个正常值(加载几秒钟)。

这是我正在谈论的脚本:

<script type="text/javascript">
   $.get("imones.txt", function (data) { 
       var array = data.split(/\r\n|\r|\n/); 
       var beforeloadingtime = (new Date()).getTime();
       var beforeTime = []; 
       beforeTime[0] = beforeloadingtime; 
       $.each(array, function (index, value) { 
           var jsonnuorodos = "http://anyorigin.com/get?url=" + array[index] + "&callback=?";
           $.getJSON(jsonnuorodos, function (data) { 
               var iframe = $("#frame_id")[0];
               var doc = iframe.document;
               if (iframe.contentDocument) { 
                   doc = iframe.contentDocument;
               } else if (iframe.contentWindow) {
                   doc = iframe.contentWindow.document;
               }
               doc.open();
               doc.writeln(data.contents); 
               doc.close(); 
               var loadingtime = (new Date()).getTime();
               beforeTime.push(loadingtime); 
               for (i = 0; i < array.length; i++) { 
                   var result; 
                   result = (beforeTime[i + 1] - beforeTime[i]) / 1000; 
                   $("#loadingtimediv" + i).html(result); 
               }
           });
       });
   });
</script>

当我有多个 url 时,为什么在运行我的脚本时会得到这个不准确的结果?

编辑:我认为我的脚本实际上并没有等待 1 个 url 在添加下一个之前完全加载,这可能是我得到错误结果的原因吗?

4

1 回答 1

1

结果可能是准确的。浏览器通常会同时下载多个资源。没有理由假设文件将按顺序加载,甚至按您请求的顺序加载。(想象一下显示网页需要下载的所有不同文件:CSS、JS、图像、框架......)

如果你想确认,你的浏览器可能有网络调试。例如,在 Chrome 开发人员工具中有一个网络选项卡,它会告诉您来自服务器的请求和响应时间。

或者尝试记录 beforeloadingtime 和每次下载完成时间之间的差异,而不是一次下载与前一次下载之间的差异。

于 2013-03-04T06:35:22.030 回答