我会与固体例如开始:我有生成散列(32位整数),并在localStorage的保存它们的功能。这是为了实现常见通知的“不再显示我”功能:如果散列在列表中,则不显示通知。压缩localStorage有用吗?
我在编写此解决方案的第一次尝试后,我进入的localStorage是这样的:
616845040,796177849,848184043,1133088406,1205053317,1478518197,1525440546,1686606993,1753347541,1908577591,2056496592,-864967541 ,-1185668678,-835401591,-1017499054,-559563441,-1842092814,-1069291933,-1887162563
19哈希,210个字节的数据。
过了一会儿,我重新审视代码。我将它们转换为实际的二进制数据,而不是将整数转换为十进制字符串。换句话说,每个散列现在是一个由四个字符组成的字符串,代表整数的二进制值。我localStorage的入门现在看起来是这样的:
$和/tμ¹2BëCGÓ§XeμZì`“dhõÕqÂ7z¥dㅗq¤ㅉ牛逼ºㅙ4EㅐZ2R¥½Oメ3AOCAECマ/ =
19散列,76个字节的数据的(那里面有一些非打印字符)
这是63.8%的储蓄。
现在,我清楚地意识到,localStorage的提供,默认情况下, 5MB的存储空间使用第一种方法很容易存储数以万计的哈希值,完全没有问题。但我喜欢高效。当我有1.8MB的相同数据(相同的压缩比率)时,我当然不希望我的电脑上有5MB的文件。这就是为什么我尽可能将所有PNG保存为索引调色板的原因。
这是一个良好的心态呢?还是我只是迂腐?我想这个问题可以概括为:我应该压缩,还是只是不在乎,因为有更多的资源比我将永远需要?来代码时
二进制可能是因为这里的字符编码问题,错误的根源。也许使用base64,base36或十六进制数字来获得一些压缩,仍然避免难以读取的不可读内容... –