(一)sessionStorage、localStorage
共同點在於:
1、存儲大小都爲5M左右
2、都有同源策略限制
3、僅在客戶端中保存,不參與和服務器通信
不同點:
1、生命週期:
localStorage是數據是永久性的,除非人爲刪除,否則會一直存在。
sessionStorage:窗口或者標籤頁被關閉,sessionStorage中存儲的數據也會被刪除。
2、作用域
localStorage:同一瀏覽器中,同源文檔可以共享localStorage的數據。
sessionStorage:不僅是統一瀏覽器中,sessionStorage實現數據共享還必須滿足同一標籤頁下或者統一窗口下。舉個例子,比如你在同一個瀏覽器中打開了同一個網址,但是這兩個網頁之間的數據還是不同共享 ,因爲他們不是同源的。
注意:localStorage常見的方法 //sessionStorage和他的用法相同
1. 存儲:localStorage.setItem(key,value) key存在,更新value
2.獲取 localStorage.getItem(key)key不存在返回null
3.刪除 localStorage.removeItem(key)
4. 全部清除 localStorage.clear()
(二)Cookie:
1、cookie的主要作用是標記用戶(購物車)和保存登錄信息等功能
2、cookie一般由服務器生成,可以設置過期時間,如果再客戶端生成的話,默認關閉瀏覽器cookie就會自動失效。
3、cookie每次都會被攜帶在HTTP頭中,保存過多會造成性能問題。
4、cookie的原生API不友好,不如localStorage的原生接口好用。
注意:本質上來講,cookie也是一種無狀態的http,工作機制如下:
(三)Session
1、Session和cookie都在無狀態的http協議,Session是服務器記錄用戶狀態時用於標識具體用戶的機制。在服務器端保存,用來跟蹤用戶狀態的數據結構。這個數據可以保存在集羣、數據庫、文件中。
2、生命週期:瀏覽器關閉後就會失效。因爲瀏覽器關閉後,這個Session的id就變了,失效。
3、利用cookie可以記錄SessionID。
4、Session的安全性高於cookie。
5、訪問過多時,Session會使服務器的性能降低。
6、Session運行依賴Session ID,但是Session ID保存在cookie,如果瀏覽器禁用了cookie,Session 就會失效。
根據:https://juejin.im/entry/5ac4d661f265da23a049c92a 整理,侵權立即刪除。