Cookie
- 服務(wù)器通過(guò) Set-Cookie 頭給客戶端一串字符串
- 客戶端每次訪問(wèn)相同域名的網(wǎng)頁(yè)時(shí),必須帶上這段字符串
- 客戶端要在一段時(shí)間內(nèi)保存這個(gè)Cookie
- Cookie 默認(rèn)在用戶關(guān)閉頁(yè)面后就失效,后臺(tái)代碼可以任意設(shè)置 Cookie 的過(guò)期時(shí)間
- 大小大概在 4kb 以內(nèi)
Session
- 將 SessionID(隨機(jī)數(shù))通過(guò) Cookie 發(fā)給客戶端
- 客戶端訪問(wèn)服務(wù)器時(shí),服務(wù)器讀取 SessionID
- 服務(wù)器有一塊內(nèi)存(哈希表)保存了所有 session
- 通過(guò) SessionID 我們可以得到對(duì)應(yīng)用戶的隱私信息,如 id、email
- 這塊內(nèi)存(哈希表)就是服務(wù)器上的所有 session
LocalStorage
- LocalStorage 跟 HTTP 無(wú)關(guān)
- HTTP 不會(huì)帶上 LocalStorage 的值
- 只有相同域名的頁(yè)面才能互相讀取 LocalStorage(沒(méi)有同源那么嚴(yán)格)
- 每個(gè)域名 localStorage 最大存儲(chǔ)量為 5Mb 左右(每個(gè)瀏覽器不一樣)
- 常用場(chǎng)景:記錄有沒(méi)有提示過(guò)用戶(沒(méi)有用的信息,不能記錄密碼)
- LocalStorage 永久有效,除非用戶清理緩存
SessionStorage(會(huì)話存儲(chǔ))
1、2、3、4 同上
- SessionStorage 在用戶關(guān)閉頁(yè)面(會(huì)話結(jié)束)后就失效。
Cookie 和 Session 的區(qū)別
- cookie機(jī)制采用的是在客戶端保持狀態(tài)的方案,而session機(jī)制采用的是在服務(wù)器端保持狀態(tài)的方案。
1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。
2、cookie不是很安全, 可以被篡改, 考慮到安全應(yīng)當(dāng)使用session。
3、單個(gè)cookie保存的數(shù)據(jù)一般不超過(guò)4K,而session的內(nèi)存比較大
4、一般將登陸信息等重要信息存放為SESSION, 免登陸功能數(shù)據(jù)就可以放在COOKIE中
Cookie 和 LocalStorage 的區(qū)別
- Cookie會(huì)被瀏覽器帶到服務(wù)器; 而LocalStorage與HPPT無(wú)關(guān)。
- 單個(gè)Cookie保存的數(shù)據(jù)一般不超過(guò)4K;每個(gè)域名LocalStorage最大存儲(chǔ)量為5MB左右。
- 客戶端在一定時(shí)間內(nèi)保存Cookie,關(guān)閉頁(yè)面后失效;LocalStorage永久有效,除非清除緩存。
LocalStorage 和 SessionStorage 的區(qū)別
*LocalStorage永久有效,除非清除緩存。SessionStorage在頁(yè)面關(guān)閉后失效。
Cache-Control: max-age=1000 緩存 與 ETag 的「緩存」有什么區(qū)別?
- Cache-Control: max-age=1000 緩存,是1000秒內(nèi)不返回請(qǐng)求
- ETag 的「緩存」,是返回請(qǐng)求響應(yīng)體為空