1够话、概念區(qū)別:
localStorage是客戶端存儲數(shù)據(jù)的兩個對象蓝翰,不會自動把數(shù)據(jù)發(fā)給服務器,僅在本地保存女嘲,用于長久保存整個網(wǎng)站的數(shù)據(jù)畜份,保存的數(shù)據(jù)沒有過期時間,直到手動去除
sessStorage是客戶端存儲數(shù)據(jù)的兩個對象欣尼,不會自動把數(shù)據(jù)發(fā)給服務器爆雹,僅在本地保存停蕉,用于臨時保存同一窗口(或標簽頁)的數(shù)據(jù),在關閉窗口或標簽頁之后將會刪除這些數(shù)據(jù)
cookie是一般由服務器生成钙态,也可以客戶端生成慧起,cookie在瀏覽器和服務器間來回傳遞
2、存儲時間區(qū)別
localStorage除非被清除册倒,否則可以永久存儲
sessStorage僅在當前會話有效蚓挤,關閉頁面或者瀏覽器后會被清除
cookie服務器端可以設置失效時間,客戶端默認關閉瀏覽器后失效
3驻子、存儲數(shù)據(jù)大小區(qū)別
localStorage的存儲空間是5M
sessStorage的存儲空間是5M
cookie只有4k左右灿意,存儲過多數(shù)據(jù)會帶來性能問題
4、作用域區(qū)別
sessionStorage不在不同的瀏覽器窗口共享崇呵,即使是同一個頁面
localStorage在所有同源窗口中都是共享的
cookie也是在所有同源窗口中都是共享的?
5缤剧、使用的區(qū)別
?localStorage和sessionStorage的使用
不管是 localStorage,還是 sessionStorage域慷,可使用的API都相同荒辕,常用的有如下幾個(以localStorage為例):
保存數(shù)據(jù):localStorage.setItem(key,value);
讀取數(shù)據(jù):localStorage.getItem(key);
刪除單個數(shù)據(jù):localStorage.removeItem(key);
刪除所有數(shù)據(jù):localStorage.clear();
得到某個索引的key:localStorage.key(index);
提示:?鍵/值對通常以字符串存儲,你可以按自己的需要轉換該格式芒粹。
cookie的使用:
添加cookie示例
獲取客戶端的Cookie時,只能獲取name與value屬性大溜,其它屬性都不會被提交化漆。
Cookie c = new Cookie("username","peter");// 新建一個Cookie對象
c.setMaxAge(24*60*60);? ? ? ? ? ? ? ? ? ? // 設置過期時間1天,以秒為單位
response.addCookie(c);? ? ? ? ? ? ? ? ? ? // 保存cookie到客戶端
刪除cookie示例
刪除某個Cookie時钦奋,只需要新建一個只有maxAge和value不一樣的同名Cookie座云,然后添加到response中覆蓋原來的Cookie
Cookie cookie = new Cookie("username","peter");// 新建Cookie
cookie.setMaxAge(0);? ? ? ? ? ? ? ? ? ? ? ? ? // 設置生命周期為0,表示將要刪除
response.addCookie(cookie);? ? ? ? ? ? ? ? ? ? // 執(zhí)行添加后就從response里刪除了
修改cookie示例
修改某個Cookie時付材,只需要新建一個只有value屬性不一樣的同名Cookie朦拖,然后添加到response中覆蓋原來的Cookie
Cookie cookie = new Cookie("username","joker");// 新建Cookie
cookie.setMaxAge(24*60*60);? ? ? ? ? ? ? ? ? ? // 設置生命周期
response.addCookie(cookie);? ? ? ? ? ? ? ? ? ? // 執(zhí)行添加后就從response里覆蓋修改了
注意:修改、刪除Cookie時厌衔,新建的Cookie除value璧帝、maxAge之外的所有屬性,例如name富寿、path睬隶、domain等,都要與原Cookie完全一樣页徐。否則苏潜,瀏覽器將視為兩個不同的Cookie而不會覆蓋之前的Cookie,從而導致修改变勇、刪除失敗恤左。