1. 程式人生 > 其它 >Localstorage、sessionStorage、cookie 以及其他儲存方式的區別

Localstorage、sessionStorage、cookie 以及其他儲存方式的區別

發現了Localstorage、sessionStorage 還能監後,又去看了下cookie ,總結了一些差異性

共同點:都是儲存在瀏覽器端、且同源的! 區別:
  1. 儲存方式:cookie 資料始終在同源的 http 請求中攜帶(即使不需要),即 cookie 在瀏覽器和伺服器間來回傳遞,而 sessionStorage 和 localStorage 不會自動把資料傳送給伺服器,僅在本地儲存。cookie 資料還有路徑(path)的概念,可以限制 cookie 只屬於某個路徑下
  2. 儲存大小限制:cookie 資料不能超過 4K,同時因為每次 http 請求都會攜帶cookie、所以 cookie 只適合儲存很小的資料,如會話標識。sessionStorage 和 localStorage雖然也有儲存大小的限制,但比 cookie 大得多,可以達到 5M 或更大
  3. 資料有效期:sessionStorage:僅在當前瀏覽器視窗關閉之前有效;localStorage:始終有效,視窗或瀏覽器關閉也一直儲存,因此用作持久資料;cookie:只在設定的cookie 過期時間之前有效,即使視窗關閉或瀏覽器關閉
  4. 作用域不同:sessionStorage 不在不同的瀏覽器視窗中共享,即使是同一個頁面;localstorage 在所有同源視窗中都是共享的;cookie 也是在所有同源視窗中都是共享的
  5. web Storage 支援事件通知機制,可以將資料更新的通知傳送給監聽者
  6. web Storage 的 api 介面使用更方便

  以上是pc常用的一些儲存方式,那麼,在h5瀏覽器中,儲存方式又有些許的不同

    1.cookie

  • 這個儲存是以前大多網站的儲存站點。
  • 容易被清除。
  • 同時 cookie 會在每一次通訊過程中傳向服務端。
  • 同時 cookie 有一個很好的地方就是,它本身有一個過期時間屬性,可以用來標註一個變數的有效期。
  • cookie 一旦過期就會被自動刪除掉

2.localStorage、sessionStorage

  • localStorage: 持久儲存,只要使用者不主動刪除就會一直存在。
  • sessionStorage:面向 session 的瀏覽器儲存,因此只存在於一個頁面的生命週期內,關閉即清除兩者均採用鍵值對的形式儲存資料

3.indexedDB

  • 內嵌在瀏覽器端的非關係型資料庫,資料以鍵值對的形式儲存,相容性良好
  • indexDB 直接操作的儲存物件是 ObjectStore,這有點類似其他資料庫中 table 概念

4.websql

  • 內嵌在瀏覽器的關係型資料庫,前端可以像在使用 mysql、Oracle 一樣的寫 sql 語句,並存儲資訊。相容性良好。儲存後可在瀏覽器 resource 中檢視
5.window 變數
  • 生命週期有限,一般大家也不會去使用。但是對於全域性變數的臨時儲存來說,還是一個不可多得的好地方
6.flash cookie
  • flash cookie 以前用的地方比較多,現在 flash cookie 不建議使用