localStorage是否可以访问繁重的操作

时间:2017-08-14 10:04:50

标签: javascript html5 local-storage

我的应用程序中的函数需要访问数组元素。 我可以在每次调用此函数时生成随机索引,或者将先前访问的索引存储到localStorage中,然后获取此值并将索引初始化为1 + previous_index

当用户再次访问我的应用程序时,我需要保留索引数据。

所以,现在我必须在一个之间做出选择。使用 Math.random()或使用 localStorage

哪个选项会更快。

PS:尽管这对性能的影响非常小。但这里的主要问题是 localStorage是否可以访问繁重的操作

2 个答案:

答案 0 :(得分:2)

这是一个沉重的操作,我倾向于说不。

它会比Math.random()慢吗?我会说这取决于你的代码..(就像你还在做什么)

我制作了jsperf here

var a = []

var key = Math.random()
a[key] =  'test'

VS

var a = []

var key = parseInt(localStorage.getItem('key')) || 0
localStorage.setItem('key', key+1)
a[key] =  'test'

Math.random()速度更快,但我没有保留任何键..键是浮点数,在我的例子中你不能使用a.length,因为浮点数一直返回0!

答案 1 :(得分:1)

您的问题的答案"本地存储访问繁重的操作"是 但与本地函数相比,它更慢。 您可以运行此处给出的测试,以获取本地存储和本地功能,因为它需要执行IO。

https://jsperf.com/localstorage2

但是,您可能会发现另一个主要问题"浏览器可能不允许在私人模式下浏览本地存储"。由于安全问题,许多浏览器在正常模式下也不允许。您可以了解有关本地存储安全问题的更多信息。

//商店 localStorage.setItem(" lastname"," Keny");

//检索 document.getElementById(" result")。innerHTML = localStorage.getItem(" lastname");

希望这会有所帮助。