除了非持久性和仅限于当前窗口之外,会话存储相对于本地存储是否有任何好处(性能、数据访问等)?
HTML5 本地存储与会话存储
localStorage和sessionStorage都扩展了Storage。除了预期的“非持久性”之外,它们之间没有区别sessionStorage
。
也就是说,存储在的数据localStorage
一直存在,直到明确删除。所做的更改将被保存并可供所有当前和未来的站点访问使用。
对于sessionStorage
,更改仅适用于每个选项卡。所做的更改将被保存并可用于该选项卡中的当前页面,直到它关闭。一旦关闭,存储的数据将被删除。
唯一的区别是 localStorage 具有不同的到期时间,sessionStorage
只能在创建它的窗口打开时访问。localStorage
一直持续到您删除它或用户删除它为止。
假设您想保存一个登录用户名和密码sessionStorage
,localStorage
出于安全原因(即其他人稍后访问他们的帐户),您想使用它。
但是,如果您想将用户的设置保存在他们的机器上,您可能需要localStorage
. 总而言之:
localStorage
- 长期使用。
sessionStorage
- 当您需要存储更改或临时存储的东西时使用
可能有助于理解本地存储和会话存储之间差异的其他几点
本地存储和会话存储都限于文档来源,因此
https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/以上所有 URL不会共享相同的存储。(注意网页路径不影响网页存储)
即使在不同标签页中打开同一个源策略的文档,会话存储也是不同的,因此在两个不同标签页中打开的同一个网页不能共享同一个会话存储。
本地和会话存储也受浏览器供应商的限制。所以IE保存的存储数据不能被Chrome或FF读取。
希望这可以帮助。
之间的主要区别localStorage
和sessionStorage
是sessionStorage
为每个标签是唯一的。如果您关闭选项卡,则会sessionStorage
被删除,localStorage
不会。您也无法在选项卡之间进行通信:)
另一个细微的区别是,例如在 Safari (8.0.3) 上localStorage
有 2551 k 个字符的限制,但sessionStorage
有无限的存储空间
在Chrome(V43)都localStorage
和sessionStorage
被限制为5101个ķ字符(正常/无痕模式之间没有差别)
在 FirefoxlocalStorage
和sessionStorage
都被限制为 5120 k 个字符(正常/私人模式之间没有区别)
速度没有任何区别:)
Mobile Safari 和 Mobile Chrome 也有问题,Private Mode Safari & Chrome 的最大空间为 0KB
sessionStorage
与 相同localStorage
,除了它只存储一个会话的数据,并且在用户关闭创建它的浏览器窗口时将被删除。