Cookie
- 伺服器通過 Set-Cookie 頭給用戶端一串字元串
- 用戶端每次通路相同域名的網頁時,必須帶上這段字元串
- 用戶端要在一段時間内儲存這個Cookie
- Cookie 預設在使用者關閉頁面後就失效,背景代碼可以任意設定 Cookie 的過期時間
- 大小大概在 4kb 以内
Session
- 将 SessionID(随機數)通過 Cookie 發給用戶端
- 用戶端通路伺服器時,伺服器讀取 SessionID
- 伺服器有一塊記憶體(哈希表)儲存了所有 session
- 通過 SessionID 我們可以得到對應使用者的隐私資訊,如 id、email
- 這塊記憶體(哈希表)就是伺服器上的所有 session
LocalStorage
- LocalStorage 跟 HTTP 無關
- HTTP 不會帶上 LocalStorage 的值
- 隻有相同域名的頁面才能互相讀取 LocalStorage(沒有同源那麼嚴格)
- 每個域名 localStorage 最大存儲量為 5Mb 左右(每個浏覽器不一樣)
- 常用場景:記錄有沒有提示過使用者(沒有用的資訊,不能記錄密碼)
- LocalStorage 永久有效,除非使用者清理緩存
SessionStorage(會話存儲)
1、2、3、4 同上
5、SessionStorage 在使用者關閉頁面(會話結束)後就失效。
Cookie 和 Session 的差別
- cookie機制采用的是在用戶端保持狀态的方案,而session機制采用的是在伺服器端保持狀态的方案。
- cookie資料存放在客戶的浏覽器上,session資料放在伺服器上。
- cookie不是很安全, 可以被篡改, 考慮到安全應當使用session。
- 單個cookie儲存的資料一般不超過4K,而session的記憶體比較大
- 一般将登陸資訊等重要資訊存放為SESSION, 免登陸功能資料就可以放在COOKIE中
Cookie 和 LocalStorage 的差別
- Cookie會被浏覽器帶到伺服器; 而LocalStorage與HPPT無關。
- 單個Cookie儲存的資料一般不超過4K;每個域名LocalStorage最大存儲量為5MB左右。
- 用戶端在一定時間内儲存Cookie,關閉頁面後失效;LocalStorage永久有效,除非清除緩存。
LocalStorage 和 SessionStorage 的差別
- LocalStorage永久有效,除非清除緩存。SessionStorage在頁面關閉後失效。
Cache-Control: max-age=1000 緩存 與 ETag 的「緩存」有什麼差別?
- Cache-Control: max-age=1000 緩存,是1000秒内不傳回請求
- ETag 的「緩存」,是傳回請求響應體為空