cookie和web Storage

朋友去面試了,回來問我通常頁面間傳參用什麼方法,我說我通常用是三種一、QueryString 二、cookies 三、webStorage。javascript

QueryString很簡單,就是在URL後面拼接參數,但缺點是傳的值會顯示在瀏覽器的地址欄中且不能傳遞對象,只適用於傳遞簡單的且安全性要求不高的整數值。今天呢主要對比一下cookies和webStorage。html

1、cookie的實現方法
cookies是存儲在用戶本地終端上的數據,cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下,並且還能夠限制失效時間。
//寫cookie
    function writeCookie(name, value, hours, path) {
        var expire = "";
        if (hours !== null) {
            expire = new Date((new Date()).getTime() + hours * 3600000);
            expire = "; expires=" + expire.toGMTString();
        }
        path = path ? "; path=" + path : "";
        document.cookie = name + "=" + encodeURIComponent(value) + expire + path;
    };
//讀取cookie
    tools.readCookie = function (name) {
        var cookieValue = "";
        var search = name + "=";
        if (document.cookie.length > 0) {
            offset = document.cookie.indexOf(search);
            if (offset != -1) {
                offset += search.length;
                end = document.cookie.indexOf(";", offset);
                if (end == -1) end = document.cookie.length;
                cookieValue = decodeURIComponent(document.cookie.substring(offset, end));
            }
        }
        return cookieValue;
    };

2、web Storage
html5中的Web Storage包括了兩種存儲方式:sessionStorage和localStorage。
注:storage只能存儲字符串的數據,對於JS中經常使用的數組或對象卻不能直接存儲。
二者的實現方法相同。html5

一、.setItem( key, value)存儲value,將value存儲到key字段:java

sessionStorage.setItem("key", "test");
localStorage.setItem("site", "segmentFault");

二、.getItem(key)獲取value,獲取指定key本地存儲的值web

var value = sessionStorage.getItem("key");     
var site = localStorage.getItem("site");

三、.removeItem(key)刪除key,刪除指定key本地存儲的值面試

sessionStorage.removeItem("key");     localStorage.removeItem("site");

四、.clear()清除全部的key/value數組

sessionStorage.clear();
localStorage.clear();

上面說了一堆的實現方法,如今能夠說說它們的區別了。
共同點:
它們都是保存在瀏覽器端,且同源的。
區別:
一、cookies
(1)ookie數據始終在同源的http請求中攜帶,即cookie在瀏覽器和服務器間來回傳遞;
(2)cookie數據路徑(path)的概念,能夠限制cookie只屬於某個路徑下。
(3)存儲大小限制也不一樣,cookie數據不能超過4k,同時由於每次http請求都會攜帶cookie,因此cookie只適合保存很小的數據。
(4)cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉。
(5)cookie也是在全部同源窗口中都是共享的。瀏覽器

Web Storage不須要經過瀏覽器的請求將數據傳給服務器,所以相比cookie來講可以存儲更多的數據,大概5M左右。
二、LocalStorage
(1)localStorage 在全部同源窗口中都是共享的。
(2)始終有效,窗口或瀏覽器關閉也一直保存,除非手動刪除,所以用做持久數據。
三、sessionStorage
(1)保存用戶臨時會話數據,一旦關閉瀏覽器,全部數據都會消失。
(2)sessionStorage不在不一樣瀏覽器窗口中共享安全

相關文章
相關標籤/搜索