我们有一个数据模型,每个实体都有600个布尔值。所有这些数据都需要通过JSON从node.js后端传输到角度前端。
我在考虑各种优化它的方法(这是一个内部API,不公开,所以坚持最佳实践不像性能和节省带宽那么重要)。
我不是一个母语为Javascript的人,所以我希望得到一些关于我正在考虑的选择的一些反馈,这些选项是:
BigInt。这是否可行的方法呢?我可以想象,就性能而言,可能会相当可怕。
中的数组中
编码二进制blob的
使用像Protobuf这样的东西的
)。
附带注意:由于基础设施的原因,我们没有对服务器端进行压缩,这使得这变得更加复杂,也是我们在数据级别上实现此功能的原因。
谢谢!
发布于 2022-11-01 17:49:49
正如Evan指出的,例如,将您的布尔值转换为true="t“和false="f”的单个字符时,这600个布尔值将变成一个由600个字符组成的联合字符串,可以很好地拆分为200个大小的3字符串,然后,一旦在前面接收到,就可以将传输连接起来,如果您想从字符串中恢复Bollean值(),只需简单地重新计算就可以了。我不知道数据是如何设置并获得的,只是将这个参数更改为我认为需要自动化的参数。在前面获得最后的字符串之后,这里是reg的一个例子,它可以使用600布尔值将字符串转换为数组。还可以通过定义对象而不是数组来定义索引。
function convert_myBool(str)
{
/*var reg = new RegExp('.{1}', 'g');
var tmpTab = str.replace(reg, function(matched){
return matched == "t"?true:false;
});*/
//map is best
tmpTab = str.split('').map((value) =>{
return value == "t"?true:false;
});
return tmpTab;
};我动态地写了这篇文章,当然,它可以被思考、改进、替换等等,希望能有所帮助:)
发布于 2022-08-01 16:08:26
可以用任何方式分类吗?如果布尔值总是与相关值一起发生,则可以对它们进行分组和简化。
根据您对该数据的使用情况,您可以根据使用频率缓存其中的一些信息或回忆录。然而,缓存会有一个空间权衡。
https://stackoverflow.com/questions/73195193
复制相似问题