2013-06-22 46 views
1

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

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

+1

表现在什么情况下?通过HTTP发送Cookie相对比较昂贵,因为本地存储控制着所有内容。 – EricLaw

+0

不要使用cookie来存储前端特定数据。使用LocalStorage,你也应该考虑使用frond end sqlite数据库。 - 但是不知道它有多广泛的支持 – andlrc

+0

我们的web应用程序使用的是我们的IOS应用程序使用的相同的API,所以我通过向我们的API发出ajax请求来获取所有内容。当我们的索引页面到达客户端时,它就像静态html页面,但通过使用ajax请求变成动态的。为了提出这些请求,我应该使用JavaScript来存储会话ID。用这种方式哪一个更有效率? – bamya

回答

5

即使我不能拿出一些jsPerf的例子,localStorage访问时间应该肯定比读出cookie更快。但那不是你在这方面唯一的关注,特别是当你在处理移动设备请求时间和表现是严酷的。

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

我的建议很明显是localStorage

+0

+1,以考虑实际的瓶颈是什么(网络),而不是陷入技术实现细节(访问cookies/localStorage的时间)。 – kwah

+2

这里我写了一个字符串cookie和本地存储通过使用香草JavaScript和作为第三种情况我使用jQuery的cookie。而且似乎写入本地存储的速度要快得多。 谢谢。 http://jsperf.com/cookie-vs-local-storage – bamya

1

请问您想如何衡量“效率”/“绩效”?

例如,您可能正在测量网络/数据使用情况,或者您可能正在测量延迟方面,或者可能根据用户“明显”的方式进行测量。

我也问过安全在这个网站上有多重要。

我个人有一个下意识的反应反对通过JavaScript访问制作饼干,特别当它涉及到会话管理。 CF:

这些请求的频率如何?

如果一次/小时,一次/分钟或一次/秒会影响结论。在这些不同的频率下几秒钟的延迟都会以不同的方式被用户感觉到。

定制的结论,你应中部署。

最后一个问题我是这样的会话ID将如何被发送到API的情况。

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

..以实际回答你的问题:

没有看到你的设计/意图,没有对上述问题的答案,并考虑到这只在性能/延迟的基础上:我认为localStorage只会是有利的,因为你可以有选择地选择何时传输会话ID(但这取决于用于“有选择地选择”的代码 - 如果它是在每个请求上发送的,那么它无论如何都不应该太重要)。

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

本质上,这是一个罗嗦的方式说“它取决于”!

+0

我只向AJAX请求发送会话ID,并且每次向API发出请求时,我都会发送会话ID,以便我们的服务器知道哪个用户是它(它使得网站像移动应用程序一样,它只能通过AJAX请求获取信息)。 但是,这不是我只想学习的情况是写入更快的cookie还是写入本地存储? – bamya

+0

像这样:http://www.w3schools.com/js/js_cookies.asp 或 这个:http://www.w3schools.com/html/html5_webstorage.asp – bamya

+0

在这个链接的顶部,它说快得多http://www.w3schools.com/html/html5_webstorage.asp。但是,它是与JavaScript编写的cookie还是由服务器编写的cookie比较,我不确定。 – bamya

1

有一个测试,你可以在浏览器中运行jsPerf here。在我使用Chrome浏览器的Ubuntu上,测试显示,阅读localStorage比阅读cookies更快,但是编写localStorage比写cookies要慢。

enter image description here