佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > 淺析數(shù)據(jù)存儲(chǔ)的三種方式 cookie sessionstorage localstorage 的異同

淺析數(shù)據(jù)存儲(chǔ)的三種方式 cookie sessionstorage localstorage 的異同

熱門標(biāo)簽:網(wǎng)站建設(shè) 檢查注冊(cè)表項(xiàng) 使用U盤裝系統(tǒng) 百度競(jìng)價(jià)點(diǎn)擊價(jià)格的計(jì)算公式 阿里云 美圖手機(jī) 硅谷的囚徒呼叫中心 智能手機(jī)

一、通常我們?cè)诖鎯?chǔ)數(shù)據(jù)的方式有三種

cookie sessionstorage localstorage ,那么這三種數(shù)據(jù)的存儲(chǔ)又有什么關(guān)系呢?讓我們一起來(lái)看看吧

cookie:保存cookie值:

var dataCookie='110';
    document.cookie = 'token' + "=" +dataCookie;

獲取指定名稱的cookie值

function getCookie(name) 
{ //獲取指定名稱的cookie值
// (^| )name=([^;]*)(;|$),match[0]為與整個(gè)正則表達(dá)式匹配的字符串,match[i]為正則表達(dá)式捕獲數(shù)組相匹配的數(shù)組;
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) {
  console.log(arr);
  return unescape(arr[2]);
}
return null;
}
 var cookieData=getCookie('token'); //cookie賦值給變量。

設(shè)置cookie過(guò)期時(shí)間

function setTime() 
{

//存儲(chǔ)cookie值并且設(shè)置cookie過(guò)期時(shí)間

var date\=new Date();

var expiresDays\=10;//設(shè)置十天過(guò)期

date.setTime(date.getTime()+expiresDays\*24\*3600\*1000);

document.cookie\="userId=828; 
expires="+date.toGMTString();

console.log(document.cookie,'存儲(chǔ)cookie值并且設(shè)置cookie過(guò)期時(shí)間');

}

setTime();

刪除cookie

function delCookie(cookieName1) {

//刪除cookie

var date2\=new Date();

date2.setTime(date2.getTime()\-10001);//把時(shí)間設(shè)置為過(guò)去的時(shí)間,會(huì)自動(dòng)刪除

document.cookie\= cookieName1+"=v; expires="+date2.toGMTString();

console.log(document.cookie,'刪除cookie');

}
delCookie('userId');

localStorage和sessionStorage:localStorage和sessionStorage所使用的方法是一樣的,下面以sessionStorage為栗子:

var name='sessionData';
var num=120;
sessionStorage.setItem(name,num);//存儲(chǔ)數(shù)據(jù)
sessionStorage.setItem('value2',119);
let dataAll=sessionStorage.valueOf();//獲取全部數(shù)據(jù)
console.log(dataAll,'獲取全部數(shù)據(jù)');
var dataSession=sessionStorage.getItem(name);//獲取指定鍵名數(shù)據(jù)
var dataSession2=sessionStorage.sessionData;//sessionStorage是js對(duì)象,也可以使用key的方式來(lái)獲取值
 console.log(dataSession,dataSession2,'獲取指定鍵名數(shù)據(jù)');
 sessionStorage.removeItem(name); //刪除指定鍵名數(shù)據(jù)
 console.log(dataAll,'獲取全部數(shù)據(jù)1');
 sessionStorage.clear();//清空緩存數(shù)據(jù):localStorage.clear();
 console.log(dataAll,'獲取全部數(shù)據(jù)2');

三者的異同:

上面的使用方式說(shuō)好了,下面就嘮嘮三者之間的區(qū)別,這個(gè)問(wèn)題其實(shí)很多大廠面試的時(shí)候也都會(huì)問(wèn)到,所以可以注意一下這幾個(gè)之間的區(qū)別。

生命周期:

cookie:可設(shè)置失效時(shí)間,沒(méi)有設(shè)置的話,默認(rèn)是關(guān)閉瀏覽器后失效

localStorage:除非被手動(dòng)清除,否則將會(huì)永久保存。

sessionStorage: 僅在當(dāng)前網(wǎng)頁(yè)會(huì)話下有效,關(guān)閉頁(yè)面或?yàn)g覽器后就會(huì)被清除。

存放數(shù)據(jù)大?。?/p>

cookie:4KB左右

localStorage和sessionStorage:可以保存5MB的信息。

http請(qǐng)求:

cookie:每次都會(huì)攜帶在HTTP頭中,如果使用cookie保存過(guò)多數(shù)據(jù)會(huì)帶來(lái)性能問(wèn)題

localStorage和sessionStorage:僅在客戶端(即瀏覽器)中保存,不參與和服務(wù)器的通信

易用性:

cookie:需要程序員自己封裝,源生的Cookie接口不友好

localStorage和sessionStorage:源生接口可以接受,亦可再次封裝來(lái)對(duì)Object和Array有更好的支持

應(yīng)用場(chǎng)景:

從安全性來(lái)說(shuō),因?yàn)槊看蝖ttp請(qǐng)求都會(huì)攜帶cookie信息,這樣無(wú)形中浪費(fèi)了帶寬,所以cookie應(yīng)該盡可能少的使用,另外cookie還需要指定作用域,不可以跨域調(diào)用,限制比較多。但是用來(lái)識(shí)別用戶登錄來(lái)說(shuō),cookie還是比stprage更好用的。其他情況下,可以使用storage,就用storage。

storage在存儲(chǔ)數(shù)據(jù)的大小上面秒殺了cookie,現(xiàn)在基本上很少使用cookie了,因?yàn)楦罂偸歉玫?,哈哈哈你們懂得?/p>

localStorage和sessionStorage唯一的差別一個(gè)是永久保存在瀏覽器里面,一個(gè)是關(guān)閉網(wǎng)頁(yè)就清除了信息。localStorage可以用來(lái)夸頁(yè)面?zhèn)鬟f參數(shù),sessionStorage用來(lái)保存一些臨時(shí)的數(shù)據(jù),防止用戶刷新頁(yè)面之后丟失了一些參數(shù)。

瀏覽器支持情況:

localStorage和sessionStorage是html5才應(yīng)用的新特性,可能有些瀏覽器并不支持,這里要注意。

cookie的瀏覽器支持沒(méi)有找到,可以通過(guò)下面這段代碼來(lái)判斷所使用的瀏覽器是否支持cookie:

if(navigator.cookieEnabled) 
{
  alert("你的瀏覽器支持cookie功能");//提示瀏覽器支持cookie  
} 
else 
{
  alert("你的瀏覽器不支持cookie");//提示瀏覽器不支持cookie  
 }

復(fù)制代碼數(shù)據(jù)存放處:Cookie、localStorage、sessionStorage數(shù)據(jù)存放處

番外:各瀏覽器Cookie大小、個(gè)數(shù)限制。

總結(jié)

到此這篇關(guān)于數(shù)據(jù)存儲(chǔ)的三種方式 cookie sessionstorage localstorage 異同的文章就介紹到這了,更多相關(guān)數(shù)據(jù)存儲(chǔ) cookie sessionstorage localstorage 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

標(biāo)簽:賀州 煙臺(tái) 黃山 通遼 湘潭 山南 懷化 湖北

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《淺析數(shù)據(jù)存儲(chǔ)的三種方式 cookie sessionstorage localstorage 的異同》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    茂名市| 顺平县| 遂平县| 梅州市| 通海县| 琼结县| 苍梧县| 潜山县| 莫力| 宜春市| 延寿县| 环江| 桐庐县| 屏边| 淄博市| 诸暨市| 格尔木市| 文水县| 青阳县| 九江县| 延川县| 洛浦县| 凤城市| 历史| 中西区| 应用必备| 淮安市| 深州市| 南投县| 尉氏县| 苍梧县| 庐江县| 定州市| 南川市| 通许县| 六盘水市| 朝阳市| 岑溪市| 贵南县| 江源县| 徐汇区|