2012-06-22 24 views
1

我会与固体例如开始:我有生成散列(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メ3AO￀CAECマ/ =

19散列,76个字节的数据的(那里面有一些非打印字符)

这是63.8%的储蓄。

现在,我清楚地意识到,localStorage的提供,默认情况下, 5MB的存储空间使用第一种方法很容易存储数以万计的哈希值,完全没有问题。但我喜欢高效。当我有1.8MB的相同数据(相同的压缩比率)时,我当然不希望我的电脑上有5MB的文件。这就是为什么我尽可能将所有PNG保存为索引调色板的原因。

这是一个良好的心态呢?还是我只是迂腐?我想这个问题可以概括为:我应该压缩,还是只是不在乎,因为有更多的资源比我将永远需要?来代码时

回答

1

迂腐还是不错的。尽可能压缩,但请确保在阅读代码时,仍然可以阅读并理解哈希以任何方式保存。

我的意思是,不要牺牲代码的可读性和可维护性的效率。

+2

二进制可能是因为这里的字符编码问题,错误的根源。也许使用base64,base36或十六进制数字来获得一些压缩,仍然避免难以读取的不可读内容... –