前端開發本地存儲之localStorage和sessionStorage


1、localStorage 概念

HTML5 web 存儲:HTML5 提供了兩種在客戶端存儲數據的新方式:localStorage 和 sessionStorage ,兩者都是僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。

早些時候,本地存儲使用的是 cookie,。但是 cookie 不適合大量數據的存儲,后來 HTML5 提供了 localStorage 和 sessionStorage Web,這些數據不會被保存在服務器上,它也可以存儲大量的數據,而不影響網站的性能。數據以鍵/值對存在且只允許該網頁訪問使用。

2、localStorage 特征

  • 生命周期:持久化的本地存儲,保存的數據沒有過期時間,直到手動去除。
  • 存儲的信息在同一域中是共享的。
  • 當本頁操作(新增、修改、刪除)了localStorage的時候,本頁面不會觸發storage事件,但是別的頁面會觸發storage事件。
  • 大小:據說是5M(跟瀏覽器廠商有關系)
  • 在非IE下的瀏覽中可以本地打開。IE瀏覽器要在服務器中打開。
  • localStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡
  • localStorage受同源策略的限制

3、sessionStorage

用於臨時保存同一窗口(或標簽頁)的數據,在關閉瀏覽器或該標簽頁之后就會刪除這些數據。

4、JavaScript操作 localStorage 和 sessionStorage 

不管是 localStorage,還是 sessionStorage,可使用的API都相同,常用的有如下幾個(下面以localStorage為例):

  • 保存數據:localStorage.setItem(key,value);    或者:localStorage.keyName = value;
  • 讀取數據:localStorage.getItem(key);
  • 刪除單個數據:localStorage.removeItem(key);
  • 刪除所有數據:localStorage.clear();
  • 得到某個索引的key:localStorage.key(index);

當我們想在 localStorage 和 sessionStorage 中存儲對象時,可以先用 JSON.stringify(obj) 方法將對象轉換為字符串,然后進行存儲。要想將值作為對象輸出可以用  JSON.parse(str) 方法將字符串轉換為對象。

5、cookie、localStorage 、 sessionStorage 的區別和共同點

共同點:

  • 都是保存在本地瀏覽器端。

區別:

  • cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞;cookie數據還有路徑(path)的概念,可以限制cookie只屬於某個路徑下。而sessionStorage和localStorage不會自動把數據發給服務器,僅在本地保存。

  • 存儲大小限制不同:cookie數據不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數據,如會話標識。sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達到5M或更大。

  • 數據有效期不同:sessionStorage僅在當前標簽頁關閉前有效,當該標簽頁關閉后數據也會被刪除;localStorage:持久化的本地存儲,保存的數據沒有過期時間,直到手動去除;cookie只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。

  • 作用域不同:sessionStorage 僅在當前標簽頁有效,即使是在同一瀏覽器中新建一標簽頁打開同一網站也不會共享;localStorage 在同一瀏覽器中的同一網站上都是共享的;cookie 可以設置域名及路徑,實現同一域名或者目錄共享。三者都是在不同瀏覽器下保存的位置可能不一樣,都不能跨瀏覽器共享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM