我正在开发一个移动网站(主要是针对Android),我想在客户端存储一个字符串(大约20个字符)。我想知道哪种方式在性能方面,本地存储或cookie方面更有效?我将使用JavaScript来编写cookie或本地存储。服务器不会在任何部分工作以创建cookie。
我找到了一些测试结果,但它们对我来说似乎并不准确。并且还发现了有关堆栈溢出的一些问题,但他们也没有回答我的问题。如果有人知道一篇好文章或测试,请帮助。
答案 0 :(得分:6)
即使我无法提出一些jsPerf
示例,localStorage
访问时间肯定比读取Cookie更快。但这并不是你唯一关注的问题,特别是当你处理的移动设备请求时间和性能非常糟糕时。
这意味着,Cookie将附加到 HTTP请求,而localStorage
数据则不会。
我的建议显然是localStorage
。
答案 1 :(得分:2)
您可以使用jsPerf here在浏览器中运行测试。在我使用Chrome的Ubuntu上,测试显示读取localStorage比读取cookie要快,但写入localStorage比写入cookie要慢。
答案 2 :(得分:1)
请问您希望如何衡量“效率”/“效果”?
例如,您可能正在测量网络/数据的使用情况,或者您可能正在测量延迟,或者可能根据用户“显而易见”的程度进行测量。
我还询问安全性对此网站的重要性。
就个人而言,我有一个下意识的反应反对通过JavaScript,特别是进行会话管理时可以访问cookie。 cf:
这些请求的频率是多少?
如果是一次/小时,一次/分钟,或一次/秒将影响结论。用户将以不同的方式感受到在这些不同频率下的几秒钟滞后。
根据你将部署的情况定制结论。
我的最后一个问题是如何将此会话ID发送到API。
是否包含在每个AJAX请求中?每页加载?如果它出现在每个AJAX请求中,而不是每个HTTP请求中?
..实际回答你的问题:
没有看到你的设计/意图,没有上述问题的答案,只考虑性能/延迟:我认为localStorage只会带来好处,因为你可以有选择地选择何时传输会话id(但这取决于用于'有选择地选择'的代码 - 如果它是在每个请求上发送的话那么它无论如何都无关紧要。)
我建议考虑是否需要性能提升(在您将部署的环境中进行过早优化和测试,而不是在独立环境中进行测试)以及安全隐患是否有任何问题(不严格)在所有情况下都是必要的,例如广告跟踪与银行应用程序)。
从本质上讲,这是一种说“依赖于”的冗长方式!