【发布时间】:2011-09-06 20:33:14
【问题描述】:
我正在制作一个处理被拖到应用程序的歌曲的应用程序。当我使用file.size 来获取文件的大小时,大约需要 1500 毫秒(平均)来获取这个值。有没有更快的方法?我理解为什么这需要时间(和内存),但由于我是处理 HTML5 文件的新手,也许有一些我不知道的东西可以加快处理速度。
文件系统 API 也是如此。如果我通过它调用文件并调用file.size,则需要类似的时间。
PS 我通过在我的代码中添加 console.time() 得出了这个结论。
这里是代码(大量精简)
fileSystem.root.getFile(id, {}, function(fileEntry) {
fileEntry.file(function(audioTemp) {
console.time(1);
console.log(audioTemp.size);
console.timeEnd(1)
});
});
这是文件系统 API 示例。这(显然)需要名为id 的文件才能工作。下面是D&D文件输入代码
function onChangeAddSongsInput() {
var files = document.getElementById('addSongsInput').files;
for(var i=0; i<files.length; i++) {
console.time(1);
console.log(files[i].size);
console.timeEnd(1)
}
}
编辑
我使用的是 AMD 等效的核心二双核、2.7 GHz、2 gigs 内存、win7 x64。我相信的规格实际上是足够体面的。因此,如果某些东西在我的机器上确实需要足够长的时间,我会认为它是不行的。
这是我的应用程序中主要错误修复的阻止程序。我真的很想在很长一段时间内提供修复程序。我(还)无法设置赏金,也许在设置赏金之前有最短时间。
编辑
我做了一些测试,结果证明,这需要很长时间,因为 chrome 计算 大小,而不是仅仅从一些元数据中读取它。 Here是测试结果。
文件越大,花费的时间越长,如果第二次调用它会使用一些缓存并且不会加载文件。所以现在..我怎样才能减少这个时间?大小是我的应用程序中的一个重要信息,但可能不足以使每个文件的用户上传速度降低约 1.5 秒!我正计划导入库,当添加 100 首左右的歌曲时,它确实有助于减少这个时间。那么这一次将是应用响应时间的一个重大突破。
【问题讨论】:
-
代码你发布代码示例或在 JSFiddle.net 上做一个小提琴好吗?
-
当然 :) 我认为这很容易,但没关系。
-
我只是想看看你的代码在我的硬件上是如何工作的 :)
-
没有问题 :D 添加了代码 :)
-
您正在使用什么浏览器/操作系统/文件大小?平均大小的 mp3 在这里速度非常快。
标签: javascript google-chrome file-upload html5-filesystem