前端面試八股文每日一題——JavaScript
請(qǐng)你描述一下 cookies,sessionStorage 和 localStorage 的區(qū)別?
參考答案:
sessionStorage和localStorage是HTML5的Web Storage API提供的,可以方便的在web請(qǐng)求之間保存數(shù)據(jù)。有了本地?cái)?shù)據(jù),就可以避免數(shù)據(jù)在瀏覽器和服務(wù)器間不必要地來(lái)回傳遞。
sessionStorage、localStorage、cookie都是在瀏覽器端存儲(chǔ)的數(shù)據(jù),其中sessionStorage的概念很特別,引入了一個(gè)“瀏覽器窗口”的概念。sessionStorage是在同源的同窗口(或tab)中,始終存在的數(shù)據(jù)。也就是說(shuō)只要這個(gè)瀏覽器窗口沒(méi)有關(guān)閉,即使刷新頁(yè)面或進(jìn)入同源另一頁(yè)面,數(shù)據(jù)仍然存在。關(guān)閉窗口后,sessionStorage即被銷毀。同時(shí)“獨(dú)立”打開的不同窗口,即使是同一頁(yè)面,sessionStorage對(duì)象也是不同的。
cookies會(huì)發(fā)送到服務(wù)端。其余兩個(gè)不會(huì)。
Microsoft指出Internet Explorer 8增加cookie限制為每個(gè)域名50個(gè),但I(xiàn)E7似乎也允許每個(gè)域名50個(gè)cookie。Firefox每個(gè)域名cookie限制為50個(gè)。Opera每個(gè)域名限制為30個(gè)。Firefox和Safari允許cookie多達(dá)4096個(gè)字節(jié),包括名(name)、值(value)和等號(hào)。Opera允許cookie多達(dá)4096個(gè)字節(jié),包括名(name)、值(value)和等號(hào)。Internet Explorer允許cookie多達(dá)4095個(gè)字節(jié),包括名(name)、值(value)和等號(hào)。
區(qū)別:
cookie
每個(gè)域名存儲(chǔ)量比較?。ǜ鳛g覽器不同,大致4K)。
所有域名的存儲(chǔ)量有限制(各瀏覽器不同,大致4K)。
有個(gè)數(shù)限制(各瀏覽器不同)。
會(huì)隨請(qǐng)求發(fā)送到服務(wù)器。
localStorage:
永久存儲(chǔ)。
單個(gè)域名存儲(chǔ)量比較大(推薦5MB,各瀏覽器不同)。
總體數(shù)量無(wú)限制。
sessionStorage:
只在session內(nèi)有效。
存儲(chǔ)量更大(推薦沒(méi)有限制,但是實(shí)際上各瀏覽器也不同)。