cookie、 sessionStorage 、localStorage之間的區(qū)別和使用

1.cookie:存儲在用戶本地終端上的數(shù)據(jù)。有時也用cookies,指某些網(wǎng)站為了辨別用戶身份,進(jìn)行session跟蹤而存儲在本地終端上的數(shù)據(jù),通常經(jīng)過加密。一般應(yīng)用最典型的案列就是判斷注冊用戶是否已經(jīng)登過該網(wǎng)站。

2.HTML5 定義了本地存儲規(guī)范 Web Storage ,提供了?兩種?在客戶端存儲數(shù)據(jù)的?API:兩者都是僅在客戶端(即瀏覽器)中保存,不參與和服務(wù)器的通信;

A??localStorage - 沒有時間限制的數(shù)據(jù)存儲,第二天、第二周或下一年之后,數(shù)據(jù)依然可用。

a.如何創(chuàng)建和訪問 localStorage:
? ? ? ?<script type="text/javascript">
? ? ? ? ? ? ? ?localStorage.lastname="Smith";
? ? ? ? ? ? ? ?document.write(localStorage.lastname);
? ? ? </script>

b.下面的例子對用戶訪問頁面的次數(shù)進(jìn)行計(jì)數(shù):
? ? ? ?<script type="text/javascript">
? ? ? ? ? ? ? if (localStorage.pagecount){
? ? ? ? ? ? ? ? ? ?localStorage.pagecount=Number(localStorage.pagecount) +1;
? ? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? ? ?localStorage.pagecount=1;
? ? ? ? ? ? ? }
? ? ? ? ? ? ?document.write("Visits "+ localStorage.pagecount + " time(s).");
? ? ? </script>

B.sessionStorage - 針對一個 session 的數(shù)據(jù)存儲,當(dāng)用戶關(guān)閉瀏覽器窗口后,數(shù)據(jù)會被刪除。

? ? ?a.創(chuàng)建并訪問一個 sessionStorage:
? ? ? ? ? ? <script type="text/javascript">
? ? ? ? ? ? ? ? ?sessionStorage.lastname="Smith";
? ? ? ? ? ? ? ? ?document.write(sessionStorage.lastname);
? ? ? ? ? ? </script>
? ? ?b.下面的例子對用戶在當(dāng)前 session 中訪問頁面的次數(shù)進(jìn)行計(jì)數(shù):
? ? ? ? ? ??<script type="text/javascript">
? ? ? ? ? ? ? ? ?if (sessionStorage.pagecount){
? ? ? ? ? ? ? ? ? ? ? ? sessionStorage.pagecount=Number(sessionStorage.pagecount) +1;
? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? sessionStorage.pagecount=1;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?document.write("Visits "+sessionStorage.pagecount+" time(s) this session.");? ? ? ? ? ? ? ? ? </script>

3sessionStorage 、localStorage 和 cookie 之間的區(qū)別
? ? ?A:共同點(diǎn):都是保存在瀏覽器端,且同源的。
? ? ?B:區(qū)別:
? ? ? ?
a.cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來回傳遞;cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個路徑下。存儲大小限制也不同,cookie數(shù)據(jù)不能超過4k,同時因?yàn)槊看蝖ttp請求都會攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會話標(biāo)識。
? ? ? ? b.而sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達(dá)到5M或更大。
? ? ? ? c.數(shù)據(jù)有效期不同,sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不可能持久保持;localStorage:始終有效,窗口或?yàn)g覽器關(guān)閉也一直保存,因此用作持久數(shù)據(jù);cookie只在設(shè)置的cookie過期時間之前一直有效,即使窗口或?yàn)g覽器關(guān)閉。
? ? ? ? d.作用域不同,sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。Web?Storage 支持事件通知機(jī)制,可以將數(shù)據(jù)更新的通知發(fā)送給監(jiān)聽者。Web?Storage?的 API 接口使用更方便。

本文來自轉(zhuǎn)載:https://www.cnblogs.com/caiyezi/p/5619506.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容