瀏覽器三種存儲方式之間的區別


1.Cookie 在瀏覽器請求中 每次都會附加請求頭發送給服務器;

2.localStorage 保存數據會一直保存,沒有過期時間;

3.sessionStorage 僅當前頁面有效,一旦關閉就會被釋放;

什么是Cookie ?

Cookie 是一些數據, 存儲於你電腦上的文本文件中。

當 web 服務器向瀏覽器發送 web 頁面時,在連接關閉后,服務端不會記錄用戶的信息。

Cookie 的作用就是用於解決 "如何記錄客戶端的用戶信息":

  • 當用戶訪問 web 頁面時,他的名字可以記錄在 cookie 中。
  • 在用戶下一次訪問該頁面時,可以在 cookie 中讀取用戶訪問記錄。

    Cookie 實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>cookie</title>
</head>
<head>
<script>
//設置cookie值的函數

function setCookie(cname,cvalue,exdays){ var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname+"="+cvalue+"; "+expires; }
// 獲取cookie值的函數
function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) { return c.substring(name.length,c.length); } } return ""; }
// 檢測cookie值的函數
function checkCookie(){ var user=getCookie("username"); if (user!=""){ alert("歡迎 " + user + " 再次訪問"); } else { user = prompt("請輸入你的名字:",""); if (user!="" && user!=null){ setCookie("username",user,30); } } } </script> </head> <body onload="checkCookie()"></body> </html>

什么是ocalStorage 和 sessionStorage?

localStorage 和 sessionStorage 屬性允許在瀏覽器中存儲 key/value 對的數據。

localStorage 用於長久保存整個網站的數據,保存的數據沒有過期時間,直到手動去刪除。

localStorage 屬性是只讀的。

提示: 如果你只想將數據保存在當前會話中,可以使用 sessionStorage 屬性, 該數據對象臨時保存同一窗口(或標簽頁)的數據,在關閉窗口或標簽頁之后將會刪除這些數據。

保存數據語法:

localStorage.setItem("key", "value");

讀取數據語法:

var lastname = localStorage.getItem("key");

刪除數據語法:

localStorage.removeItem("key");

localStorage實例

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>localStorage</title>
<script>
function clickCounter() {
    if(typeof(Storage) !== "undefined") {
        if (localStorage.clickcount) {
            localStorage.clickcount = Number(localStorage.clickcount)+1;
        } else {
            localStorage.clickcount = 1;
        }
        document.getElementById("result").innerHTML = "你在按鈕上已經點擊了 " + localStorage.clickcount + " 次。";
    } else {
        document.getElementById("result").innerHTML = "Sorry, your browser does not support web storage...";
    }
}
</script>
</head>
<body>
<p><button onclick="clickCounter()" type="button">點我!</button></p>
<div id="result"></div>
<p>點擊按鈕查看數字會自動增加。</p>
<p>關閉瀏覽器,重新打開這個頁面點擊按鈕,可以看到之前的數據是有保留的。</p>
</body>
</html>

localStorage 的優勢

  •  1、localStorage 拓展了 cookie 的 4K 限制。
  •  2、localStorage 會可以將第一次請求的數據直接存儲到本地,這個相當於一個 5M 大小的針對於前端頁面的數據庫,相比於 cookie 可以節約帶寬,但是這個卻是只有在高版本的瀏覽器中才支持的。

localStorage 的局限

  •  1、瀏覽器的大小不統一,並且在 IE8 以上的 IE 版本才支持 localStorage 這個屬性。
  •  2、目前所有的瀏覽器中都會把localStorage的值類型限定為string類型,這個在對我們日常比較常見的JSON對象類型需要一些轉換。
  •  3、localStorage在瀏覽器的隱私模式下面是不可讀取的。
  •  4、localStorage本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡。
  •  5、localStorage不能被爬蟲抓取到。

localStorage 與 sessionStorage 的唯一一點區別就是 localStorage 屬於永久性存儲,而 sessionStorage 屬於當會話結束的時候,sessionStorage 中的鍵值對會被清空。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM