1. 程式人生 > >localstorage sessionstorage cookie的區別

localstorage sessionstorage cookie的區別

一、基本概念

Cookie

cookie比較小,大小限制在4kb左右,是網景公司的前僱員 LouMontulli 在1993年3月的發明。它的主要用途有儲存登入資訊,比如你登入某個網站市場可以看到“記住密碼”,這通常就是通過在 Cookie 中存入一段辨別使用者身份的資料來實現的。
localStorage

localStorage 是 HTML5 標準中新加入的技術,它並不是什麼劃時代新東西。早在 IE 6 時代,就有一個叫 userData 的東西用於本地儲存,而當時考慮到瀏覽器相容性,更通用的方案是使用 Flash。而如,localStorage 被大多數瀏覽器所支援,如果你的網站需要支援 IE6+,那以 userData 作為你的 polyfill 的方案是種不錯的選擇。

sessionStorage

sessionStorage 與 localStorage 的介面類似,但儲存資料的生命週期與 localStorage 不同。做過後端開發的同學應該知道 Session 這個詞的意思,直譯過來是“會話”。而 sessionStorage 是一個前端的概念,它只是可以將一部分資料在當前會話中儲存下來,重新整理頁面資料依舊存在。但當頁面關閉後,sessionStorage 中的資料就會被清空。

二、異同

sessionStarage ,localStorage,cookie 都是在瀏覽器端儲存的資料,其中sessionStorage的概念很特別,引入了一個瀏覽器視窗的概念。sessionStorage實在同源的 同窗口(或tab) 中,始終存在的資料。即只要這個瀏覽器視窗沒有關閉,即使重新整理頁面或進入同源另一頁面,資料仍然存在。關閉視窗後,sessionStorage即被銷燬。同時“獨立”開啟的不同視窗,即使是同一頁面,sessionStorage物件也是不同的。
區別:
(1)cookie資料始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和伺服器間來回傳遞。而sessionStorage和localStorage不會自動把資料發給伺服器,僅在本地儲存。cookie資料還有路徑(path)的概念,可以限制cookie只屬於某個路徑下。
(2)儲存大小限制也不同,cookie資料不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合儲存很小的資料,如會話標識。sessionStorage和localStorage 雖然也有儲存大小的限制,但比cookie大得多,可以達到5M或更大。
(3)資料有效期不同,sessionStorage:僅在當前瀏覽器視窗關閉前有效,自然也就不可能持久保持;localStorage:始終有效,視窗或瀏覽器關閉也一直儲存,因此用作持久資料;cookie只在設定的cookie過期時間之前一直有效,即使視窗或瀏覽器關閉。
(4)作用域不同,sessionStorage不在不同的瀏覽器視窗中共享,即使是同一個頁面;localStorage 在所有同源視窗中都是共享的;cookie也是在所有同源視窗中都是共享的。
(5)Web Storage 支援事件通知機制,可以將資料更新的通知傳送給監聽者。Web Storage 的 api 介面使用更方便。

sessionStorage與頁面 js 資料物件的區別
頁面中一般的 js 物件或資料的生存期是僅在當前頁面有效,因此重新整理頁面或轉到另一頁面這樣的重新載入頁面的情況,資料就不存在了。
而sessionStorage 只要同源的同窗口(或tab)中,重新整理頁面或進入同源的不同頁面,資料始終存在。也就是說只要這個瀏覽器視窗沒有關閉,載入新頁面或重新載入,資料仍然存在。

這裡寫圖片描述

三、瀏覽器本地儲存與伺服器端儲存之間的區別

瀏覽器端可以儲存一些資料,需要的時候直接從本地獲取,sessionStorage、localStorage和cookie都由瀏覽器儲存在本地的資料。

伺服器端也可以儲存所有使用者的所有資料,但需要的時候瀏覽器要向伺服器請求資料。
(1)伺服器端可以儲存使用者的持久資料,如資料庫和雲端儲存將使用者的大量資料儲存在伺服器端。
(2)伺服器端也可以儲存使用者的臨時會話資料。伺服器端的session機制,如jsp的 session 物件,資料儲存在伺服器上。實現上,伺服器和瀏覽器之間僅需傳遞session id即可,伺服器根據session id找到對應使用者的session物件。會話資料僅在一段時間內有效,這個時間就是server端設定的session有效期。
(3)伺服器端儲存所有的使用者的資料,所以伺服器端的開銷較大,而瀏覽器端儲存則把不同使用者需要的資料分佈儲存在使用者各自的瀏覽器中。
瀏覽器端一般只用來儲存小資料,而伺服器可以儲存大資料或小資料。
伺服器儲存資料安全一些,瀏覽器只適合儲存一般資料。

四、Web Storage 帶來的好處

(1)減少網路流量:一旦資料儲存在本地後,就可以避免再向伺服器請求資料,因此減少不必要的資料請求,減少資料在瀏覽器和伺服器間不必要地來回傳遞。
(2)快速顯示資料:效能好,從本地讀資料比通過網路從伺服器獲得資料快得多,本地資料可以即時獲得。再加上網頁本身也可以有快取,因此整個頁面和資料都在本地的話,可以立即顯示。
(3)臨時儲存:很多時候資料只需要在使用者瀏覽一組頁面期間使用,關閉視窗後資料就可以丟棄了,這種情況使用sessionStorage非常方便。

五、應用場景

因為考慮到每個 HTTP 請求都會帶著 Cookie 的資訊,所以 Cookie 當然是能精簡就精簡啦,比較常用的一個應用場景就是判斷使用者是否登入
針對登入過的使用者,伺服器端會在他登入時往 Cookie 中插入一段加密過的唯一辨識單一使用者的辨識碼,下次只要讀取這個值就可以判斷當前使用者是否登入啦。
曾經還使用 Cookie 來儲存使用者在電商網站的購物車資訊,如今有了 localStorage,就可以利用localStorage代替cookie了。
而另一方面 localStorage 接替了 Cookie 管理購物車的工作,同時也能勝任其他一些工作。比如HTML5遊戲通常會產生一些本地資料,localStorage 也是非常適用的。如果遇到一些內容特別多的表單,為了優化使用者體驗,我們可能要把表單頁面拆分成多個子頁面,然後按步驟引導使用者填寫。這時候 sessionStorage 的作用就發揮出來了。

六、安全性的考慮

需要注意的是,不是什麼資料都適合放在 Cookie、localStorage 和 sessionStorage 中的。使用它們的時候,
需要時刻注意是否有程式碼存在 XSS 注入的風險。因為只要開啟控制檯,你就隨意修改它們的值,也就是說如果你的網站中有 XSS 的風險,
它們就能對你的 localStorage 肆意妄為。所以千萬不要用它們儲存你係統中的敏感資料。但是cookie可以採取一些策略來預防XSS攻擊。
http://stackoverflow.com/questions/19867599/what-is-the-difference-between-localstorage-sessionstorage-session-and-cookies
上面的連結裡有介紹cookie的。

七、判斷 html5 web storage的瀏覽器的支援情況

瀏覽器的支援除了IE7及以下不支援外,其他標準瀏覽器都完全支援(ie及FF需在web伺服器裡執行),值得一提的是IE總是辦好事,例如IE7、IE6中的UserData其實就是javascript本地儲存的解決方案。
通過簡單的程式碼封裝可以統一到所有的瀏覽器都支援web storage。

if(window.localStorage)
{
    alert(“瀏覽器支援localStorage”)
} else {
    alert("不支援");
}

if(typeof window.localStorage === 'undefined') 如果支援的話會返回object。

八、localStorage 和sessionStorage操作

它們具有相同的操作方法,例如setItem、getItem和removeItem等。
例如:

sessionStarage.setItem('key','value');

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

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

clear 清除所有的key/value
sessionStorage.clear();     localStorage.clear();

例如:sessionStorage和localStorage提供的key()和length可以方便的實現儲存的資料遍歷

var storage = window.localStorage;
for (var i=0, len = storage.length; i  <  len; i++){
    var key = storage.key(i);
    var value = storage.getItem(key);
    console.log(key + "=" + value); }
}

storage事件
當鍵值改變或者clear的時候,就可以觸發storage事件。
if(window.addEventListener){ 
    window.addEventListener("storage",handle_storage,false);
}else if(window.attachEvent){
    window.attachEvent("onstorage",handle_storage); 
}
function handle_storage(e){
    if(!e){e=window.event;}
}

九、實際應用舉例

利用本地儲存的計數器

var storage = window.localStorage;
if (!storage.getItem("pageLoadCount")) storage.setItem("pageLoadCount",0);
storage.pageLoadCount = parseInt(storage.getItem("pageLoadCount")) + 1;//必須格式轉換
document.getElementByIdx_x("count").innerHTML = storage.pageLoadCount;
showStorage();

需要注意的是,HTML5本地儲存只能存字串,任何格式儲存的時候都會被自動轉為字串,所以讀取的時候,需要自己進行型別的轉換。這也就是上一段程式碼中parseInt必須要使用的原因。

相關推薦

localstorage sessionstorage cookie區別

一、基本概念 Cookie cookie比較小,大小限制在4kb左右,是網景公司的前僱員 LouMontulli 在1993年3月的發明。它的主要用途有儲存登入資訊,比如你登入某個網站市場可以看到“記住密碼”,這通常就是通過在 Cookie 中存入一段辨別使

cookiesessionStoragelocalStorage之間的區別和使用

有效期 blog 請求 ora coo 頁面 作用域 .cn 有效 http://www.cnblogs.com/caiyezi/p/5619506.html 1.cookie:存儲在用戶本地終端上的數據2.localStorage - 沒有時間限制的數據存儲3.sessi

sessionStoragelocalStoragecookie 之間的區別

大小 路徑 大小限制 共享 限制 存在 接口 也有 有效期 共同點:都是保存在瀏覽器端,且同源的。 區別: cookie數據始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務器間來回傳遞。而sessionStorage和localStorage

cookie,session和localstoragesessionStorage區別

cookie ​ cookie 是儲存於訪問者的計算機中的變數。每當同一臺計算機通過瀏覽器請求某個頁面時,就會發送這個 cookie。你可以使用 JavaScript 來建立和取回 cookie 的值。 ​ 當訪問者首次訪問頁面時,他或她也許會填寫他/她們的名字。名字會儲存於 cookie

瀏覽器儲存之CookieLocalStorageSessionStorage區別詳解

Cookie 常用於客戶端與服務端之間的通訊,但是它有本地儲存的功能。 缺點: 儲存量太小,只有4kb 所有http請求都會含cookie,會影響獲取資源的效率 API簡單,需要封裝一下才能用 LocalStorage 和SessionStorage H5問世後

sessionStorage,localStorage,cookie區別

1、cookie資料始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和伺服器間來回傳遞,而sessionStorage和localStorage不會自動把資料傳送給伺服器,僅在本地儲存。cookie資料還有路徑(path)的概念,可以限制cookie只屬於

瀏覽器快取Cookie,localStorage,sessionStorage三者的區別與用法

在web網頁開發中,常常會用到Cookie,localStorage,sessionStorage等方式臨時儲存客戶端資料,本文為大家解說這三種方式的區別,應用場景以及使用方法。 三者的異同 cookie cookie 是儲存於訪問者的計算機中的變數。每當同一臺計

cookie、session、localStoragesessionStorage區別

一.cookie和session: 1.瀏覽器的快取機制: (1)瀏覽器的快取機制提供了可以將使用者資料儲存在客戶端上的方式,可以利用cookie和session跟服務端進行資料互動 (2)cookie和session都是用來跟蹤瀏覽器使用者身份的會話方式 2.cookie和

資料快取sessionStoragelocalStoragecookie、session間的區別與聯絡

 核心三步曲:建立-獲取-清除(回收) sessionStorage.setItem("key","123"); sessionStorage.getItem("key"); sessionStorage.removeItem("key"); sessionStora

cookielocalStoragesessionStorage區別

從時間上講cookie 的過期時間         第一種, 不設定過期時間, 會話結束,自動失效         第二種, 設定時間, 到時間後,失效。localStorage的過期時間        永不失效,除非web應用主動刪除。sessionStorage的過期時間

淺談cookie,session和localStoragesessionStorage區別

寫在前面 既然是淺談,就不會詳細從底層原理解釋這幾個的區別,就簡單地聊一下,這幾個的區別,優缺點,應用場景 cookie和session 瀏覽器的快取機制提供了可以將使用者資料儲存在客戶端上的方式,可以利用cookie和session跟服務端進行資料互動。cooki

Cookie, LocalStorageSessionStorage區別

一、概念1. Cookie 的大小限制為4KB左右,是網景公司的前僱員 Lou Montulli 在1993年3月的發明。它的主要用途有儲存登入資訊,比如你登入某個網站市場可以看到“記住密碼”,這通常就

本地儲存常用方式 localStorage, sessionStoragecookie區別 和 伺服器儲存session

本地儲存:把一些資訊儲存到客戶端本地(主要目的有很多,其中有一個就是實現多頁面之間的資訊共享)       1. 離線快取(xxx.manifest)  H5處理離線快取還是存在一些硬傷的,所以真實專案中一般還是傳統的NATIVE APP來完成這件事

vuex存儲和本地存儲(localstoragesessionstorage)的區別

方法 之間 做到 get 無法 傳值 href 狀態 來源 1. sessionStorage   sessionStorage 方法針對一個 session 進行數據存儲。當用戶關閉瀏覽器窗口後,數據會被刪除。   用法:     儲存: 1. 點(.)運算符

sessionStoragelocalStoragecookie

文章目錄 1. cookie 1.1. 會話期Cookie 1.2. 永續性Cookie 1.3. 寫cookie 1.3.1. expires 1.3.2. max-age 1.3.3. pa

sessionStoragelocalStoragecookie方法小結

特性 Cookie localStorage sessionStorage 資料的生命期 一般由伺服器生成,可設定失效時間。如果在瀏覽器端生成Cookie,預設是關閉瀏覽器後失效 除非

cookie localstorage sessionstorage

資料生命週期:cookie 一般由伺服器產生,可設定失效時間。由瀏覽器產生,關閉瀏覽器被清除。 localstorage 除非被清除,否則永久儲存 sessionstorage 頁面關閉或瀏覽器關閉時,資料消失。 資料大小 :cookie 4kb左右 localstorage session

【Vue】vuex儲存和本地儲存(localstoragesessionstorage)的區別

1. sessionStorage    sessionStorage 方法針對一個 session 進行資料儲存。當用戶關閉瀏覽器視窗後,資料會被刪除。   用法:      儲存: 1. 點(.)運算子     

localStoragesessionStorage區別和用法

webstorage webstorage是本地儲存,儲存在客戶端,包括localStorage和sessionStorage。 localStorage  localStorage生命週期是永久,這意味著除非使用者顯示在瀏覽器提供的UI上清除loca

sessionStoragelocalStoragecookie、session詳解

cookie和session的區別 由於HTTP是一種無狀態的協議,資料交換完畢後會關閉連線,為了分辨一個請求是誰發起的,以免在同一個網站每開啟一個頁面都需要重新登入,引入了Session和Cookie兩個機制。 Cookie和Session都是用來跟蹤瀏覽器使用者身份的方式。 1、