cookie雖然在持久保存客戶端數(shù)據(jù)提供了方便灸蟆,分擔(dān)了服務(wù)器存儲(chǔ)的負(fù)擔(dān)驯耻,但還是有很多局限性的。
第一:每個(gè)特定的域名下最多生成20個(gè)cookie
1.IE6或更低版本最多20個(gè)cookie
2.IE7和之后的版本最后可以有50個(gè)cookie炒考。
3.Firefox最多50個(gè)cookie
4.chrome和Safari沒(méi)有做硬性限制
IE和Opera 會(huì)清理近期最少使用的cookie可缚,F(xiàn)irefox會(huì)隨機(jī)清理cookie。
cookie的最大大約為4096字節(jié)斋枢,為了兼容性帘靡,一般不能超過(guò)4095字節(jié)。
IE 提供了一種存儲(chǔ)可以持久化用戶數(shù)據(jù)瓤帚,叫做userdata描姚,從IE5.0就開(kāi)始支持。每個(gè)數(shù)據(jù)最多128K戈次,每個(gè)域名下最多1M轩勘。這個(gè)持久化數(shù)據(jù)放在緩存中,
如果緩存沒(méi)有清理怯邪,那么會(huì)一直存在绊寻。
優(yōu)點(diǎn):極高的擴(kuò)展性和可用性
1.通過(guò)良好的編程,控制保存在cookie中的session對(duì)象的大小悬秉。
2.通過(guò)加密和安全傳輸技術(shù)(SSL)澄步,減少cookie被破解的可能性。
3.只在cookie中存放不敏感數(shù)據(jù)和泌,即使被盜也不會(huì)有重大損失村缸。
4.控制cookie的生命期,使之不會(huì)永遠(yuǎn)有效武氓。偷盜者很可能拿到一個(gè)過(guò)期的cookie梯皿。
缺點(diǎn):
1.Cookie數(shù)量和長(zhǎng)度的限制搪柑。每個(gè)domain最多只能有20條cookie,每個(gè)cookie長(zhǎng)度不能超過(guò)4KB索烹,否則會(huì)被截掉.
2.安全性問(wèn)題。如果cookie被人攔截了弱睦,那人就可以取得所有的session信息百姓。即使加密也與事無(wú)補(bǔ),因?yàn)閿r截者并不需要知道cookie的意義况木,他只要原樣轉(zhuǎn)發(fā)cookie就可以達(dá)到目的了垒拢。
3.有些狀態(tài)不可能保存在客戶端。例如火惊,為了防止重復(fù)提交表單求类,我們需要在服務(wù)器端保存一個(gè)計(jì)數(shù)器。如果我們把這個(gè)計(jì)數(shù)器保存在客戶端屹耐,那么它起不到任何作用尸疆。
瀏覽器本地存儲(chǔ)
在較高版本的瀏覽器中,js提供了sessionStorage和globalStorage惶岭。在HTML5中提供了localStorage來(lái)取代globalStorage寿弱。
html5中的Web Storage包括了兩種存儲(chǔ)方式:sessionStorage和localStorage。
sessionStorage用于本地存儲(chǔ)一個(gè)會(huì)話(session)中的數(shù)據(jù)按灶,這些數(shù)據(jù)只有在同一個(gè)會(huì)話中的頁(yè)面才能訪問(wèn)并且當(dāng)會(huì)話結(jié)束后數(shù)據(jù)也隨之銷毀症革。
因此sessionStorage不是一種持久化的本地存儲(chǔ),僅僅是會(huì)話級(jí)別的存儲(chǔ)鸯旁。
而localStorage用于持久化的本地存儲(chǔ)噪矛,除非主動(dòng)刪除數(shù)據(jù),否則數(shù)據(jù)是永遠(yuǎn)不會(huì)過(guò)期的铺罢。
web storage和cookie的區(qū)別
Web Storage的概念和cookie相似艇挨,區(qū)別是它是為了更大容量存儲(chǔ)設(shè)計(jì)的。Cookie的大小是受限的畏铆,并且每次你請(qǐng)求一個(gè)新的頁(yè)面的時(shí)候Cookie都會(huì)被發(fā)送過(guò)去雷袋,這樣無(wú)形中浪費(fèi)了帶寬,另外cookie還需要指定作用域辞居,不可以跨域調(diào)用楷怒。
除此之外,Web Storage擁有setItem,getItem,removeItem,clear等方法瓦灶,不像cookie需要前端開(kāi)發(fā)者自己封裝setCookie鸠删,getCookie。
但是cookie也是不可或缺的:cookie的作用是與服務(wù)器進(jìn)行交互贼陶,作為HTTP規(guī)范的一部分而存在 刃泡,而Web Storage僅僅是為了在本地“存儲(chǔ)”數(shù)據(jù)而生
瀏覽器的支持除了IE7及以下不支持外巧娱,其他標(biāo)準(zhǔn)瀏覽器都完全支持(ie及FF需在web服務(wù)器里運(yùn)行),值得一提的是IE總是辦好事烘贴,
例如IE7禁添、IE6中的userData其實(shí)就是javascript本地存儲(chǔ)的解決方案。通過(guò)簡(jiǎn)單的代碼封裝可以統(tǒng)一到所有的瀏覽器都支持web storage桨踪。
localStorage和sessionStorage都具有相同的操作方法老翘,例如setItem、getItem和removeItem等
cookie 和session 的區(qū)別:
1锻离、cookie數(shù)據(jù)存放在客戶的瀏覽器上铺峭,session數(shù)據(jù)放在服務(wù)器上。
2汽纠、cookie不是很安全卫键,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙
考慮到安全應(yīng)當(dāng)使用session。
3虱朵、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上莉炉。當(dāng)訪問(wèn)增多,會(huì)比較占用你服務(wù)器的性能
考慮到減輕服務(wù)器性能方面卧秘,應(yīng)當(dāng)使用COOKIE呢袱。
4、單個(gè)cookie保存的數(shù)據(jù)不能超過(guò)4K翅敌,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie羞福。
5、所以個(gè)人建議:
將登陸信息等重要信息存放為SESSION
其他信息如果需要保留蚯涮,可以放在COOKIE中