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