2.3 优化策略
既然从localStorage读取数据有一定开销,那么这会怎样影响你如何使用这一技术呢?在下结论之前,我运行了另一个基准测试(http://jsperf .com/localstorage-string- size),以确定从localStorage读取不同大小数据的效果。我们保存4种不同大小的字符串(100个字符、500个汉字、1000个字符和2000个字符)到localStorage中,然后把它们读取出来。结果有点令人惊讶,在所有浏览器中,读取数据量的大小不会影响读取速度的快慢。
我测试了很多次,并恳请我的Twitter粉丝提供更多的信息(https://twitter.com/ slicknet/status/139475625793699840)。可以肯定的是,对于不同的浏览器会有些许差异,但这些差异都不大,并没有实质性的不同。我的结论是:从单一localStorage键值中读取的数据量对速度没有影响。
我又进行了另一个基准测试(http://jsperf.com/localstorage-string-size-retrieval)来检验我的新结论,最好尽可能地减少读取数据的次数。和此前的基准测试结果类似,在大多数浏览器中,读取100个字符10次比一次读取10 000字符慢90%左右。
鉴于此,从localStorage读取数据的最佳策略是使用尽可能少的键值,存储尽可能多的数据。因为读取10个字符和读取2000个字符所需时间大致是相同的,所以你应该尝试把尽可能多的数据保存为一个键值对应的值。每次调用getItem()(或从localStorage读取属性)都会增加时耗,所以一定要确保每次访问读取数据最大化。对于任何一个变量或对象属性,你越快将它读取到内存,后续的所有操作也会越快。