HTML5本地存储与会话存储
除了非持久性和仅限于当前窗口的范围之外,是否有任何好处(性能,数据访问等)到本地存储上的会话存储?
localStorage
和sessionStorage
都扩展了Storage
。 除了sessionStorage
的预期“非持久性”外,它们之间没有区别。
也就是说,存储在localStorage
的数据一直存在,直到被明确删除。 所做的更改已保存,并可用于当前和未来对该网站的所有访问。
对于sessionStorage
,更改仅适用于每个窗口(或Chrome和Firefox等浏览器中的选项卡)。 所做的更改将保存并可用于当前页面,以及将来在同一窗口中访问该网站。 窗口closures后,存储被删除。
唯一的区别是localStorage具有不同的到期时间, sessionStorage
只能在创build它的窗口打开时访问。
localStorage
一直持续到您删除它或用户删除它。
比方说,你想保存一个login用户名和密码,你会想出于安全考虑使用sessionStorage
over localStorage
(即另一个人在以后访问他们的帐户)。
但是如果你想在用户的机器上保存用户的设置,你可能需要localStorage
。 总而言之:
localStorage
– 用于长期使用。
sessionStorage
– 当你需要存储改变或暂时的东西的时候使用
其他几点可能有助于理解本地和会话存储之间的差异
-
所以本地存储和会话存储的范围都是文档来源
https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/以上所有url都不会共享相同的存储空间。 (通知path的网页不会影响networking存储)
-
即使在不同标签中打开具有相同来源策略的文档,会话存储也是不同的,因此在两个不同标签中打开的相同网页不能共享相同的会话存储。
-
本地和会话存储也都由浏览器供应商确定 。 所以IE保存的数据不能被Chrome或者FF读取。
希望这可以帮助。
localStorage
和sessionStorage
之间的主要区别在于,每个选项卡的sessionStorage
都是唯一的。 如果closures选项卡sessionStorage
被删除, localStorage
不会。 你也无法沟通标签:)
另一个微妙的区别是,例如在Safari(8.0.3) localStorage
的限制为2551 k个字符,但sessionStorage
有无限的存储
在Chrome(v43)上, localStorage
和sessionStorage
都限制为5101 k个字符(正常/私有模式没有区别)
在Firefox上, localStorage
和sessionStorage
被限制为5120 k个字符(正常/无痕模式没有区别)
无论速度没有差异:)
Mobile Safari和Mobile Chrome也存在问题,私有模式Safari和Chrome的最大空间为0KB
sessionStorage与localStorage相同,不同之处在于它只存储一个会话的数据,当用户closures创build它的浏览器窗口时会被删除
本地存储可以存储高达10MB的离线数据,而会话存储可以存储高达5MB的数据。 但是Cookie只能存储4kb的文本数据。
性能方面,我的(粗略的)测量发现在1000次写入和读取上没有差异
安全明智,直观地看来,本地存储可能会在sessionStore之前closures,但没有具体的证据 – 也许别人呢?
function上明智的,同上数字新鲜
Ya会话存储和本地存储在行为上是一样的,除了本地存储将存储数据,除非用户删除caching和cookie,并且会话存储数据将保留在系统中,直到我们closures会话i,直到我们closures会话存储创build窗口。
它们之间没有任何区别扩展存储,但sessionStorage为会话(选项卡或窗口)和localStorage存在的域,直到它被明确删除(调用清除方法或清除浏览器现金)。
在我看来,会话存储在本地存储上的优势在于,它在Firefox中拥有无限的容量 ,并且不会持续比会话更长的时间。 (当然这取决于你的目标是什么。)