HTML5本地存储与会话存储

jpk*_*ala 527 javascript html5 session-storage local-storage

除了非持久性和仅限于当前窗口的范围之外,对本地存储的会话存储有任何好处(性能,数据访问等)吗?

tco*_*ooc 758

localStoragesessionStorage都扩展了存储.除了预期的"非持久性"之外,它们之间没有区别sessionStorage.

也就是说,存储的数据会localStorage一直存在,直到被明确删除.所做的更改已保存,可用于当前和将来对网站的所有访问.

因为sessionStorage,更改仅适用于每个窗口(或Chrome和Firefox等浏览器中的选项卡).所做的更改将保存并可用于当前页面,以及将来在同一窗口中访问该站点.窗口关闭后,将删除存储.

  • SessionStorage在页面重新加载和恢复时仍然存在,但打开新的选项卡/窗口将启动新会话. (31认同)
  • 有一个更广泛的讨论,你可能会在这里找到帮助:http://stackoverflow.com/questions/19867599/what-is-the-difference-between-localstorage-sessionstorage-session-and-cookie (17认同)
  • 如果您将某些数据保存在http下的存储中,则无法通过https检索它 (12认同)

May*_*nty 151

唯一的区别是localStorage具有不同的到期时间,sessionStorage只有在创建它的窗口打开时才能访问.
localStorage持续到您删除它或用户删除它.
比方说,你想保存登录用户名和密码,您可能需要使用sessionStorage超过localStorage出于安全原因(即另一人在以后的时间访问他们的帐户).
但是如果你想在他们的机器上保存用户的设置,你可能会想要localStorage.总而言之:

localStorage - 用于长期使用.
sessionStorage - 当你需要存储变化的东西或临时的东西时使用


fun*_*oid 98

其他几点可能有助于理解本地和会话存储之间的差异

  1. 本地存储和会话存储都限定为文档原点,因此

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    以上所有URL都不会共享相同的存储空间.(网页的通知路径不影响网络存储)

  2. 即使对于在不同选项卡中打开具有相同原始策略的文档,会话存储也是不同的,因此在两个不同选项卡中打开的相同网页不能共享相同的会话存储.

  3. 本地和会话存储也由浏览器供应商确定范围.因此,Chrome或FF无法读取IE保存的存储数据.

希望这可以帮助.

  • 如果您首先在https源中设置sessionStorage,它将在http中可用,但如果您在http中创建sessionStore,则在http中将不可用 (4认同)
  • @Shahdat,你的意思是"那时候不会用https"(请注意s)? (4认同)
  • 不,http和https之间的sessionStorage相同,但localStorage没有. (3认同)
  • @DanielWerner是的,如果您在http中创建sessionStore,则无法在https中使用. (3认同)

Eek*_*Eek 28

之间的主要区别localStoragesessionStoragesessionStorage为每个标签是唯一的.如果关闭选项卡,则sessionStorage删除,localStorage不会.你也无法在标签之间沟通:)

另一个细微差别是,例如在Safari(8.0.3)上localStorage有2551个字符的限制,但sessionStorage具有无限的存储空间

在Chrome(V43)都localStoragesessionStorage被限制为5101个ķ字符(正常/私人模式之间没有差别)

在Firefox上,localStorage并且sessionStorage限制为5120 k字符(普通/隐身模式之间没有区别)

速度没有差别:)

Mobile Safari和Mobile Chrome也存在问题,私密模式Safari和Chrome的最大空间为0KB


小智 15

sessionStorage与localStorage相同,只是它只存储一个会话的数据,当用户关闭创建它的浏览器窗口时,它将被删除


cc *_*ung 10

性能方面,我的(粗略)测量结果发现1000次写入和读取没有差异

安全方面,直观地说,似乎localStore可能会在sessionStore之前关闭,但没有具体的证据 - 也许其他人呢?

功能明智,与上面的digitalFresh一致


小智 9

  • sessionStorage为每个给定源维护一个单独的存储区域,该区域在页面会话期间可用(只要浏览器打开,包括页面重新加载和恢复)

  • localStorage做同样的事情,但即使关闭并重新打开浏览器,它仍然存在。

我把这个取自Web Storage API


小智 6

Ya会话存储和本地存储在行为上是相同的,除了本地存储之一将存储数据,除非用户删除缓存并且cookie和会话存储数据将保留在系统中直到我们关闭会话i,直到我们关闭会话存储创建窗口.


avv*_*ett 5

在我看来,会话存储优于本地存储的优势在于它在Firefox中具有无限容量,并且不会比会话持续更长时间.(当然这取决于你的目标.)