本地存储与cookie性能

时间:2013-06-22 00:33:23

标签: javascript browser web

我正在开发一个移动网站(主要是针对Android),我想在客户端存储一个字符串(大约20个字符)。我想知道哪种方式在性能方面,本地存储或cookie方面更有效?我将使用JavaScript来编写cookie或本地存储。服务器不会在任何部分工作以创建cookie。

我找到了一些测试结果,但它们对我来说似乎并不准确。并且还发现了有关堆栈溢出的一些问题,但他们也没有回答我的问题。如果有人知道一篇好文章或测试,请帮助。

3 个答案:

答案 0 :(得分:6)

即使我无法提出一些jsPerf示例,localStorage访问时间肯定比读取Cookie更快。但这并不是你唯一关注的问题,特别是当你处理的移动设备请求时间和性能非常糟糕时。

这意味着,Cookie将附加到 HTTP请求,而localStorage数据则不会。

我的建议显然是localStorage

答案 1 :(得分:2)

您可以使用jsPerf here在浏览器中运行测试。在我使用Chrome的Ubuntu上,测试显示读取localStorage比读取cookie要快,但写入localStorage比写入cookie要慢。

enter image description here

答案 2 :(得分:1)

请问您希望如何衡量“效率”/“效果”?

例如,您可能正在测量网络/数据的使用情况,或者您可能正在测量延迟,或者可能根据用户“显而易见”的程度进行测量。

我还询问安全性对此网站的重要性。

就个人而言,我有一个下意识的反应反对通过JavaScript,特别是进行会话管理时可以访问cookie。 cf:

这些请求的频率是多少?

如果是一次/小时,一次/分钟,或一次/秒将影响结论。用户将以不同的方式感受到在这些不同频率下的几秒钟滞后。

根据你将部署的情况定制结论。

我的最后一个问题是如何将此会话ID发送到API。

是否包含在每个AJAX请求中?每页加载?如果它出现在每个AJAX请求中,而不是每个HTTP请求中?

..实际回答你的问题:

没有看到你的设计/意图,没有上述问题的答案,只考虑性能/延迟:我认为localStorage只会带来好处,因为你可以有选择地选择何时传输会话id(但这取决于用于'有选择地选择'的代码 - 如果它是在每个请求上发送的话那么它无论如何都无关紧要。)

我建议考虑是否需要性能提升(在您将部署的环境中进行过早优化和测试,而不是在独立环境中进行测试)以及安全隐患是否有任何问题(不严格)在所有情况下都是必要的,例如广告跟踪与银行应用程序)。

从本质上讲,这是一种说“依赖于”的冗长方式!