【基礎梳理】cookie、session、sessionStorage、localStorage之間的區別及應用場景

Chen發表於2019-02-16

在前端日常開發中 cookiewebStorage 是我們常用的瀏覽器快取方式。但同時說起 cookiesessionsessionStoragelocalStorage 是不是有些傻傻分不清楚了?本文梳理概括了它們的區別及應用場景,相信對你的面試和實際應用都有一定幫助。

cookie

  • 由服務端生成,儲存在客戶端(由於前後端有互動,所以安全性差,且浪費頻寬)
  • 儲存大小有限(最大 4kb )
  • 儲存內容只接受 String 型別
  • 儲存位置:

    • 若未設定過期時間,則儲存在 記憶體 中,瀏覽器關閉後銷燬
    • 若設定了過期時間,則儲存在 系統硬碟 中,直到過期時間結束後才消失(即使關閉瀏覽器)
  • 資料操作不方便,原生介面不友好,需要自己封裝
  • 應用場景

    • 判斷使用者是否登陸過網站,以便下次登入時能夠實現自動登入(或者記住密碼)
    • 儲存登入時間、瀏覽次數等資訊

設定了過期時間的cookie存在了哪裡呢?
Mac: /Users/使用者名稱/Library/caches/Google/Chrome/Default/cache
Windows: C:Users使用者名稱AppDataLocalMicrosoftWindowsTemporary Internet Files

session

  • 是後端關心的內容,依賴於 cookie(sessionID 儲存在cookie中)
  • 儲存在服務端
  • 儲存大小無限制
  • 支援任何型別的儲存內容
  • 儲存位置:伺服器記憶體,若訪問較多會影響伺服器效能

webStorage

webStorage 是 html5 提供的本地儲存方案,包括兩種方式:sessionStoragelocalStorage。相比 cookie 這種傳統的客戶端儲存方式,webStorage 有許多優點:

  • 儲存在客戶端,不與伺服器通訊,因此比 cookie 更安全、速度更快
  • 儲存空間有限,但比 cookie 大(5MB)
  • 僅支援 String 型別的儲存內容(和 cookie 一樣)
  • html5 提供了原生介面,資料操作比 cookie 方便

    • setItem(key, value) 儲存資料,以鍵值對的方式儲存資訊。
    • getItem(key) 獲取資料,將鍵值傳入,即可獲取到對應的value值。
    • removeItem(key) 刪除單個資料,根據鍵值移除對應的資訊。
    • clear() 刪除所有的資料
    • key(index) 獲取某個索引的key
localStorage
  • 持久化的本地儲存,瀏覽器關閉重新開啟資料依然存在(除非手動刪除資料)。
  • 應用場景:長期登入、判斷使用者是否已登入,適合長期儲存在本地的資料。

儲存資料夾:
Mac: /Users/使用者名稱/Library/Application Support/Google/Chrome/Default/Local Stroage
Windows: C:Users使用者名稱AppDataLocalGoogleChromeUser DataProfileLocal Storage

sessionStorage
  • 瀏覽器視窗關閉後資料被銷燬。
  • 應用場景:敏感賬號一次性登入。

總結

綜上所述,我們可以知道,cookiewebStorage( localStorage、sessionStorage )是前端工程師關心的內容,session 是後端關心的內容。
cookie 儲存量小、安全性差、資料操作介面不友好,而 webStorage 儲存量較大、安全性較高、資料介面友好。
若要持久的儲存方式,推薦使用 localStorage
若要一次性會話的儲存,推薦使用 sessionStorage

看完有收穫嗎?喜歡請點贊支援哦~

相關文章