[JavaScript] Cookie、LocalStorage、SessionStorage 差異

Peggy Chan
3 min readJun 18, 2019

--

基本概念

Cookie

可設定失效時間。 預設是關閉瀏覽器後失效

HTTP cookie(web cookie、browser cookie)為伺服器傳送給使用者瀏覽器的一個小片段資料。瀏覽器可能儲存並在下一次請求回傳 cookie 至相同的伺服器。Cookie 通常被用來保持使用者的登入狀態 — — 如果兩次請求都來自相同的瀏覽器。有個數限制(各瀏覽器不同),一般不能超過20個

  • 大小約 4kb
  • 每次 request 時都會帶上

LocalStorage / SessionStorage

是HTML5提供兩種在客戶端儲存資料的方法,彌補了cookie儲存量小、不適用於大量資料本地儲存的問題。
從字面上的意思就可以看出,sessionStorage將資料儲存在session中,瀏覽器關閉也就沒了;而localStorage則一直將資料儲存在客戶端本地; 不管是sessionStorage,還是localStorage,可使用的API都相同。

  • 都是使用 key / value pair 的方式 給值或取值
  • 大小預設有 5mb
  • 每次 request 不會帶上

LocalStorage

不會過期,除非手動清除

SessionStorage

每次分頁或瀏覽器關掉後就會清除

生命周期只存在瀏覽囂的 單一分頁 ,也就是 另開新分頁的話 ,又是一個 新的sessionStorage ,預設無逾期時間,除非關閉該分頁、關閉瀏覽器等,sessionStorage就會消失。

三者差異

應用場景

Cookie

比較常用的場景就是判斷用戶是否登錄
針對登錄過的用戶,服務器端會在他登錄時往Cookie 插入一段加密過的辨識碼,下次只要讀取這個值就可以判斷用戶是否登錄

  • Session 管理
    帳號登入、購物車、遊戲分數,或任何其他伺服器應該記住的資訊
  • 個人化
    使用者設定、佈景主題,以及其他設定
  • 追蹤
    記錄並分析使用者行為

LocalStorage

而另一方面 localStorage 代替了 Cookie 管理購物車的工作,同時也能勝任其他工作。比如說HTML遊戲通常會產生一些數據,localStorage 也很適合使用。

SessionStorage

如果遇到一些內容特別多的表單,為了提升用戶體驗,可能要把表單頁面拆分成多個子頁面,然後按照步驟引導用戶。這時候 sessionStorage 就可以發揮出效用。

安全考慮

並非所有數據都適合儲存在這些其中。因為只要網站中存有XSS 的風險,打開控制台,就可以隨意修改值,就能對你的localStorage 肆意妄為。所以千萬不要將敏感數據儲存在這其中。

--

--