我有一个我正在尝试用 Javascript 读取的表,其中的数据足够大,我希望以二进制格式保存它以节省空间。该表的大部分内容不是数字就是枚举,但也有一些数据是字符串。我正在尝试找出用 Javascript 读取该数据的最佳方法。有什么建议么?
仅供参考,压缩后的文本版本约为 33 MB,而压缩后的二进制文件约为 20 MB,这就是我尝试减小大小的原因,希望能够更快地加载。我打算用 Python 对数据进行一些预处理,这会将数据减少到我真正关心的数据。我可能正在对这些数据进行一些过滤,但理想情况下我最终想要一个静态网站,所以我强烈希望不必依赖任何类型的服务器端代码。几乎有任何值得注意的文件只有约 1 MB,所以我希望这不是一个大问题。
如果任何系统允许 16 位浮点数,则加分,因为有许多浮点数,16 位的精度足以充分捕获。
到目前为止,我的代码很简单,如下所示。请注意发生任何有用的事情的缺失块......
function loadBinaryFloatArray(url) {
var mRequest = new XMLHttpRequest();
mRequest.open('GET', url);
mRequest.responseType = 'arraybuffer';
mRequest.onreadystatechange = function () {
if (this.readyState === 4) {
}
};
mRequest.send();
}
console.log("Test")
loadBinaryFloatArray("/data/sbdb_important.bin")
数据看起来像这样。注意我可能会删除其中的一些列,但这是源数据。在某些引用中,实际上只有第一列将存储为字符串,其他列可以存储为某种类型的数字或转换为数字的枚举。可能会有两个实际的字符串,我想我要把一根字符串分成两部分。
作为参考,打包的 Python 代码如下。如果需要,我可以将e
s 更改为其他值,float32s 或转换为小数的整数,但如果能原生支持会很好。
struct.pack('ehifeefff',diameter,type,epoch,a,e,i,om,w,ma)