cookie
HTTP Cookie 是服務(wù)器發(fā)送到用戶瀏覽器并保存在瀏覽器上的一塊數(shù)據(jù),它會在瀏覽器下一次發(fā)起請求時被攜帶并發(fā)送到服務(wù)器上。Cookie 的使用使得基于無狀態(tài)的 HTTP 協(xié)議上記錄穩(wěn)定的狀態(tài)信息成為了可能。
Cookie 主要用在以下三個方面:
- 會話狀態(tài)管理(如用戶登錄狀態(tài)、購物車)
- 個性化設(shè)置(如用戶自定義設(shè)置)
- 瀏覽器行為跟蹤(如跟蹤分析用戶行為)
LocalStorage
localStorage 用于持久化的本地存儲,除非主動刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會過期的
SessionStorage
sessionStorage 用于本地存儲一個會話中的數(shù)據(jù),這些數(shù)據(jù)只會在同一個會話中的頁面中才能訪問并且當(dāng)會話結(jié)束后數(shù)據(jù)也隨之銷毀,因此 sessionStorage 不是一種持久化的本地存儲,僅僅是會話級別的存儲。
頁面會話在瀏覽器打開期間一直保持,并且重新加載或恢復(fù)頁面仍會保持原來的頁面會話。在新標(biāo)簽或窗口打開一個頁面會初始化一個新的會話
Session
- session 存放在服務(wù)端,類似散列表的形勢,每一個 session 有一個 sessionId。
- 客戶端發(fā)起請求的時候會帶上 sessionID
- 如果沒有 sessionID,在服務(wù)端會新建一個 sessionId,然后返回給客戶端
三者的區(qū)別
特性 | Cookie | LocalStorage | SessionStorage |
---|---|---|---|
是否攜帶HTTP請求 | 是 | 否 | 否 |
存放數(shù)據(jù)大小 | 每個域20個Cookie 大小為4KB | 5MB | 5MB |
數(shù)據(jù)的生命周期 | 一般由服務(wù)器生成,可設(shè)置失效時間。如果在瀏覽器端生成 Cookie,默認(rèn)是關(guān)閉瀏覽器后失效 | 持久保存 | 會話結(jié)束 |