之前沒有用過session,只用過HTML5中l(wèi)ocalStorage(以前總結(jié)過sessionStorage 、localStorage和cookies的區(qū)別);剛開始我以為session和sessionStorage是同一個(gè)東西。。。
它們的區(qū)別:
1、存儲(chǔ)位置:
cookie數(shù)據(jù)存放在瀏覽器上,session數(shù)據(jù)存放在服務(wù)器上;
2、安全性
cookie相對(duì)來說沒有session安全,因?yàn)閯e人可以通過分析cookie來進(jìn)行cookie欺騙;(當(dāng)然我們可以加密解密cookie)因此一般情況下登錄等重要信息應(yīng)采用session;
3、性能
session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上,因此當(dāng)訪問增大時(shí),會(huì)影響服務(wù)器的性能,而cookie則不存在該情況;
4、大小限制
cookie有大小限制(不能超過4k),很多瀏覽器會(huì)限制一個(gè)站點(diǎn)最多保存20個(gè)cookie,而session的大小則只以硬件為限制;
5、存取方式
Cookie中只能保管ASCII字符串,假如需求存取Unicode字符或者二進(jìn)制數(shù)據(jù),需求先進(jìn)行編碼。Cookie中也不能直接存取Java對(duì)象。若要存儲(chǔ)略微復(fù)雜的信息,運(yùn)用Cookie是比擬艱難的。
而Session中能夠存取任何類型的數(shù)據(jù),包括而不限于String、Integer、List、Map等。Session中也能夠直接保管Java Bean乃至任何Java類,對(duì)象等,運(yùn)用起來十分便當(dāng)。能夠把Session看做是一個(gè)Java容器類。
6、跨域支持
Cookie支持部分跨域名訪問,例如將domain屬性設(shè)置為“.biaodianfu.com”,則以“.biaodianfu.com”為后綴的一切域名均能夠訪問該Cookie??缬蛎鸆ookie如今被普遍用在網(wǎng)絡(luò)中,例如Google、Baidu、Sina等。而Session則不會(huì)支持跨域名訪問。Session僅在他所在的域名內(nèi)有效。
7、生命周期
(以20分鐘為例)
(1)cookie的生命周期是累計(jì)的,從創(chuàng)建時(shí),就開始計(jì)時(shí),20分鐘后,cookie生命周期結(jié)束,
(2)session的生命周期是間隔的,從創(chuàng)建時(shí),開始計(jì)時(shí)如在20分鐘,沒有訪問session,那么session生命周期被銷毀
但是,如果在20分鐘內(nèi)(如在第19分鐘時(shí))訪問過session,那么,將重新計(jì)算session的生命周期
(3)關(guān)機(jī)會(huì)造成session生命周期的結(jié)束,但是對(duì)cookie沒有影響
參考資料:
1、 cookie 和session 的區(qū)別詳解
2、Cookie與Session的區(qū)別與聯(lián)系及生命周期
3、Cookie與Session的區(qū)別