首先,從存儲位置來看,可以分為服務端存儲和客戶端存儲兩種。
服務端存儲:session
瀏覽器端存儲:cookie,localStorage,sessionStorage
cookie、session區別
存儲位置:cookie 存儲于瀏覽器端,而 session 存儲于服務端
機制:cookie 是存儲在瀏覽器里的一小段「數據」,而session是一種讓服務器能識別某個用戶的「機制」,session 在實現的過程中需要使用cookie。 二者不是同一維度的東西。
安全:cookie 的安全性相比于 session 較弱,別人可以分析存放在本地的COOKIE并進行COOKIE欺騙 ,考慮到安全應當使用session。
性能:session 會在一定時間內保存在服務器上。當訪問增多時,會占用服務器的資源,所以考慮到服務器性能方面,可以使用cookie
存儲大小區別:cookie 存儲容量有限制,單個cookie 保存數據不能超過4k,且很多瀏覽器限制一個站點最多保存20個cookie。而對于 session ,其默認大小一般是1024k
攜帶:cookie 數據始終在同源的http請求中攜帶,session給予cookie一個session id來識別用戶
cookie、sessionStorage、localStorage 異同點
html5 中 webStorage 包含 sessionStorage 和 localStorage
共同點:
都保存在瀏覽器端,(且是同源的)
區別:
1.存儲大小區別,cookie 是4k,webStorage 可以達到5M甚至更大
2.數據有效時間區別: sessionStorage 僅僅是會話級別的存儲,它只在當前瀏覽器關閉前有效,不能持久保持;localStorage 始終有效,即使窗口或瀏覽器關閉也一直有效,除非用戶手動刪除,其才會失效;cookie 只在設置的 cookie 過期時間之前一直有效。
3.作用域區別:sessionStorage 在不同頁面無法共享; localStorage 和 cookie 在所有同源窗口是共享的。
(相同瀏覽器的不同頁面間可以共享相同的 localStorage(頁面屬于相同域名和端口),但是不同頁面或標簽頁間無法共享sessionStorage的信息)
4.cookie 數據始終在同源的http請求中攜帶,而 webStorage 不會再請求中攜帶,僅僅在本地存儲
(5.Web Storage 支持事件通知機制,可以將數據更新的通知發送給監聽者。Web Storage 的 api 接口使用更方便。)