HTML5本地存储与会话存储

除了非持久性且仅限于当前窗口之外,会话存储与本地存储相比是否有任何好处(性能、数据访问等)?

405664 次浏览

本地存储会话存储接口都扩展了存储。除了sessionStorage的预期“非持久性”之外,它们之间没有区别。

即存储在localStorage持续到显式删除中的数据。所做的更改将被保存并可供当前和未来访问该站点的所有人使用。

对于sessionStorage更改仅适用于每个选项卡。所做的更改将被保存并可用于当前页面在那个标签,直到它关闭。关闭后,存储的数据将被删除。

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

安全方面,直观地看,localStore可能会在会话之前关闭Store,但没有具体的证据-也许是其他人?

功能方面,与上面的数字新鲜一致

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

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

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

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

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

  1. 本地存储和会话存储的范围都是文档源,因此

    https://mydomain.example/
    http://mydomain.example/
    https://mydomain.example:8080/
    

    以上所有URL将<强>不共享同一个存储。(网页的通知路径不影响网络存储)

  2. 即使对于在不同选项卡中打开的具有相同来源策略的文档,会话存储也不同,因此在两个不同选项卡中打开的同一个网页<强>不能共享相同的会话存储。

  3. 本地和会话存储也受浏览器供应商的限制。因此IE保存的存储数据不能被Chrome或FF读取。

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

localStoragesessionStorage之间的主要区别在于sessionStorage是每个选项卡唯一的。如果您关闭选项卡,sessionStorage会被删除,localStorage不会。您也无法在选项卡之间通信:)

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

在Chrome(v43)上,localStoragesessionStorage仅限于5101 k字符(正常/隐身模式之间没有区别)

在Firefox上,localStoragesessionStorage都仅限于5120 k字符(正常/私有模式之间没有区别)

速度上没有任何差别:)

还有一个问题与移动Safari和移动Chrome,私人模式Safari&Chrome有一个最大的空间0KB

本地存储:它保持存储用户信息数据没有到期日此数据将不会被删除,当用户关闭浏览器窗口,它将是可用的一天,一周,一个月和一年。

//Set the value in a local storage object
localStorage.setItem('name', myName);


//Get the value from storage object
localStorage.getItem('name');


//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege

会话存储:它与本地存储日期相同,只是它会在Web用户关闭浏览器窗口时删除所有窗口。

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

阅读更多点击

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

  • localStorage做同样的事情,但即使浏览器关闭并重新打开也会持续存在。

我把这个从Web Storage API

回答晚了,但觉得在这里补充几点。

会话存储将可用于特定的选项卡,因为我们可以在浏览器中使用本地存储。两者都是默认的同源,我们也可以使用键、值对手动存储值(值必须是字符串)。

一旦浏览器的选项卡(会话)关闭,则该选项卡上的会话存储将被清除,与本地存储的情况一样,我们需要明确地清除它。最大存储限制分别为5MB10MB

我们可以像下面这样保存和检索数据,

保存:

sessionStorage.setItem('id', noOfClicks);   // localStorage.setItem('id', noOfClicks);


sessionStorage.setItem('userDetails', JSON.stringify(userDetails));   // if it's object

要获得:

sessionStorage.getItem('id');    // localStorage.getItem('id');


User user = JSON.parse(sessionStorage.getItem("userDetails")) as User;  // if it's object

要修改:

sessionStorage.removeItem('id');    // localStorage.removeItem('id');


sessionStorage.clear();   // localStorage.clear();

附注:getItem()也将数据作为字符串返回,我们将需要转换它转换为JSON格式以访问它是否为对象。

你可以阅读更多关于浏览器存储在这里。

  1. localStorage、会话存储和cookie之间的区别

  2. 本地存储与会话存储