什么是cookie?
- cookie一般是由服務(wù)器用Set-Cookie 頭給客戶端一串字符串
- 客戶端每次訪問相同域名的網(wǎng)頁時,必須帶上這段字符串
- 客戶端要在一段時間內(nèi)保存這個Cookie
- Cookie 默認在用戶關(guān)閉頁面后就失效痊银,后臺代碼可以任意設(shè)置 Cookie 的過期時間
- cookie存放于硬盤,通常大小為4KB
- 前端最好不要讀寫cookie
- 用戶可以人為修改cookie
什么是session?
- 正是因為用戶可以修改cookie,所以誕生出session,它是基于cookie的.
- session是服務(wù)器上的一塊內(nèi)存(hash表),保存了所有session
- session將 SessionID(隨機數(shù))通過 Cookie 發(fā)給客戶端.客戶端訪問服務(wù)器時抵蚊,服務(wù)器讀取 SessionID
- 服務(wù)器再通過 SessionID 可以得到對應(yīng)用戶的隱私信息,如 id曼验、email
什么是localstorage?
- LocalStorage 跟 HTTP 無關(guān)
- HTTP 不會帶上 LocalStorage 的值
- 只有相同域名的頁面才能互相讀取 LocalStorage(沒有同源那么嚴格)
- 每個域名 localStorage 存儲量為 5-10Mb 左右(每個瀏覽器不一樣)
- 常用場景:記錄有沒有提示過用戶(沒有用的信息泌射,不能記錄密碼)
- LocalStorage 永久有效,除非用戶清理緩存
什么是sessionstorage?
- 與localstorage類似,屬于本地存儲與上面的session無關(guān).但是關(guān)閉瀏覽器失效.
什么是cache-control?
- cache-control通常用于優(yōu)化網(wǎng)頁性能,適當(dāng)使用可減少重復(fù)讀取相同內(nèi)容
- 可以在服務(wù)端setHeader設(shè)置cache-control
- 可以設(shè)置讓該字段存于緩存中,瀏覽器下次訪問時不發(fā)起請求,直接從緩存中讀取該資源
什么是ETag?
- ETag通常用于優(yōu)化網(wǎng)頁性能,適當(dāng)使用可減少重復(fù)讀取相同內(nèi)容
- 可通過服務(wù)端setHeader設(shè)置etag為相應(yīng)的字段的md5值
- 瀏覽器訪問時,request.headers會帶有if-none-match屬性(為上述MD5),若不等于則說明服務(wù)器上的
該資源與本地存儲的該資源不相同,需要重新從服務(wù)器加載;若相等則說明兩者資源相同,則直接從本地
緩存獲取.后端應(yīng)設(shè)置statusCode=304.與cache-control不同的是:etag始終都要發(fā)請求和收響應(yīng),而
cache-control不發(fā)請求.