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