JS实现多线程数据分片下载
在大数据开发过程中,为了提高大文件的上传速度,往往需要将大文件切割为小的数据分片,这样小分片数据可以充分利用有限的带宽,加快上传速度。
上传完成后,通常做法是在后端进行合并,而我的做法是后台保持分片存储,数据使用时候,前端JS开启多线程下载,再合并为完整的文件。这样的好处和上传一样,可以提高下载速度很多倍。下载效率和分片算法相关。
以下是多线程分片下载聚合的实现。
function concatenate(arrays) { if (!arrays.length) return null; let totalLength = arrays.reduce((acc, value) => acc + value.length, 0); let result = new Uint8Array(totalLength); let length = 0; for (let array of arrays) { result.set(array, length); length += array.length; } return result; } function getContentLength(url) { return new Promise((resolve, reject) => { let xhr = new XMLHttpRequest(); xhr.open("HEAD", url); xhr.send(); xhr.onload = function () { resolve( // xhr.getResponseHeader("Accept-Ranges")
上一篇:
下一篇:
HDFS的小文件合并成大文件