cookies sessionStorage和localstorage區別

localStorage、sessionStorage、Cookie共同點:都是保存在瀏覽器端,且同源的。

localStorage

localStorage生命週期是永久.這意味着除非用戶顯示在瀏覽器提供的UI上清除localStorage信息,否則這些信息將永遠存在。存放數據大小爲一般爲5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。

sessionStorage

sessionStorage僅在當前會話下有效,關閉頁面或瀏覽器後被清除。存放數據大小爲一般爲5MB,而且它僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信。源生接口可以接受,亦可再次封裝來對Object和Array有更好的支持。
localStorage和sessionStorage使用時使用相同的API:

 localStorage.setItem("key","value");//以“key”爲名稱存儲一個值“value”

    localStorage.getItem("key");//獲取名稱爲“key”的值

    localStorage.removeItem("key");//刪除名稱爲“key”的信息。

    localStorage.clear();​//清空localStorage中所有信息

簡單的舉個例子來了解一下他們的用法
仿一下京東官網頂部的廣告關閉,效果爲第一次進入官網會出現廣告,然後點擊關閉,刷新網頁不會再顯示廣告,但是當清除localStorage存入的數據,刷新網頁會再顯示廣告。
html代碼

<div class="header">
    <div class="header-a">
        <a href=""></a>
        <i class="close">x</i>
    </div>
</div>    

css代碼

.header{
    width:100%;
    height:80px;
    background:#000;
}
.header-a{
    width:1190px;
    margin:0 auto;
    position:relative;
    background:url("images/1.jpg") no-repeat;
}
.header-a a{
    width:100%;
    height:80px;
    display:block;
}
.close{
    cursor:pointer;
    color:#fff;
    position:absolute;
    top:5px;
    right:5px;
    background:rgb(129, 117, 117);
    width: 20px;
    text-align: center;
    line-height: 20px;
}    

js代碼

//localStorage方法
<script src="../js/jquery.min.js"></script>
function haxi(){
        //判斷localStorage裏有沒有isClose
        if(localStorage.getItem("isClose")){             
            $(".header").hide();
        }else{
            $(".header").show();
        }
        //點擊關閉隱藏圖片存取數據
        $(".close").click(function(){
            $(".header").fadeOut(1000);

            localStorage.setItem("isClose", "1"); 
        })
    }
    haxi();

作用域不同
不同瀏覽器無法共享localStorage或sessionStorage中的信息。相同瀏覽器的不同頁面間可以共享相同的 localStorage(頁面屬於相同域名和端口),但是不同頁面或標籤頁間無法共享sessionStorage的信息。這裏需要注意的是,頁面及標 籤頁僅指頂級窗口,如果一個標籤頁包含多個iframe標籤且他們屬於同源頁面,那麼他們之間是可以共享sessionStorage的。

Cookie

生命期爲只在設置的cookie過期時間之前一直有效,即使窗口或瀏覽器關閉。 存放數據大小爲4K左右 。有個數限制(各瀏覽器不同),一般不能超過20個。與服務器端通信:每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題。但Cookie需要程序員自己封裝,源生的Cookie接口不友好(https://www.cnblogs.com/endv/p/8089506.html)。

cookie的優點:具有極高的擴展性和可用性

1.通過良好的編程,控制保存在cookie中的session對象的大小。
2.通過加密和安全傳輸技術,減少cookie被破解的可能性。
3.只有在cookie中存放不敏感的數據,即使被盜取也不會有很大的損失。
4.控制cookie的生命期,使之不會永遠有效。這樣的話偷盜者很可能拿到的就 是一個過期的cookie。

cookie的缺點:

1.cookie的長度和數量的限制。每個domain最多隻能有20條cookie,每個cookie長度不能超過4KB。否則會被截掉。
2.安全性問題。如果cookie被人攔掉了,那個人就可以獲取到所有session信息。加密的話也不起什麼作用。
3.有些狀態不可能保存在客戶端。例如,爲了防止重複提交表單,我們需要在服務端保存一個計數器。若吧計數器保存在客戶端,則起不到什麼作用。

轉自 https://segmentfault.com/a/1190000012057010

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章