JavaScript本地儲存:localStorage、sessionStorage、cookie的使用
javaScript有三種數(shù)據(jù)存儲方式,分別是:
sessionStorage localStorage cookier1. sessionStorage
sessionStorage僅在當(dāng)前會話下有效,關(guān)閉頁面或瀏覽器后被清除; setItem(key,value) 設(shè)置數(shù)據(jù) getItem(key) 獲取數(shù)據(jù) removeItem(key) 移除數(shù)據(jù) clear() 清除所有值<script> // 添加數(shù)據(jù) window.sessionStorage.setItem('name','李四') window.sessionStorage.setItem('age',18) // 獲取數(shù)據(jù) console.log(window.sessionStorage.getItem('name')) // 李四 // 清除某個數(shù)據(jù) window.sessionStorage.removeItem('gender') // 清空所有數(shù)據(jù) window.sessionStorage.clear()</script>
2. localStorage
localStorage 是 HTML5 標(biāo)準(zhǔn)中新加入的技術(shù),用于長久保存整個網(wǎng)站的數(shù)據(jù),保存的數(shù)據(jù)沒有過期時間,直到手動去刪除; localStorage和sessionStorage最大一般為5MB,僅在客戶端(即瀏覽器)中保存,不參與和服務(wù)器的通信; setItem(key,value) 設(shè)置數(shù)據(jù) getItem(key) 獲取數(shù)據(jù) removeItem(key) 移除數(shù)據(jù) clear() 清除所有值<script> // 添加數(shù)據(jù) window.localStorage.setItem('name','張三') window.localStorage.setItem('age',20) window.localStorage.setItem('gender','男') // 獲取數(shù)據(jù) console.log(window.localStorage.getItem('name')) // 張三 // 清除某個數(shù)據(jù) window.localStorage.removeItem('gender') // 清空所有數(shù)據(jù) window.localStorage.clear()</script>
3. cookier
簡介Cookie 是一些數(shù)據(jù), 存儲于你電腦上的文本文件中,用于存儲 web 頁面的用戶信息Cookie 數(shù)據(jù)是以鍵值對的形式存在的,每個鍵值對都有過期時間。如果不設(shè)置時間,瀏覽器關(guān)閉,cookie就會消失,當(dāng)然用戶也可以手動清除cookie Cookie每次都會攜帶在HTTP頭中,如果使用cookie保存過多數(shù)據(jù)會帶來性能問題Cookie內(nèi)存大小受限,一般每個域名下是4K左右,每個域名大概能存儲50個鍵值對
基本操作 通過訪問document.cookie可以對cookie進行創(chuàng)建,修改與獲取。 默認(rèn)情況下,cookie 在瀏覽器關(guān)閉時刪除,你還可以為 cookie的某個鍵值對 添加一個過期時間 如果設(shè)置新的cookie時,某個key已經(jīng)存在,則會更新這個key對應(yīng)的值,否則他們會同時存在cookie中
<script> // 設(shè)置cookie document.cookie = 'username=orochiz' document.cookie = 'age=20' // 讀取cookie var msg = document.cookie console.log(msg) // username=orochiz; age=20 // 添加過期時間(單位:天) var d = new Date() // 當(dāng)前時間 2019-9-25 var days = 3 // 3天 d.setDate(d.getDate() + days) document.cookie = 'username=orochiz;'+'expires='+d // 刪除cookie (給某個鍵值對設(shè)置過期的時間) d.setDate(d.getDate() - 1) console.log(document.cookie)</script>
總結(jié)
相同點:都保存在瀏覽器端,可以下圖位置查看儲存的信息
不同點:
①傳遞方式不同
cookie數(shù)據(jù)始終在同源的http請求中攜帶(即使不需要),即cookie在瀏覽器和服務(wù)器間來回傳遞。
sessionStorage和localStorage不會自動把數(shù)據(jù)發(fā)給服務(wù)器,僅在本地保存。
②數(shù)據(jù)大小不同
cookie數(shù)據(jù)還有路徑(path)的概念,可以限制cookie只屬于某個路徑下。 存儲大小限制也不同,cookie數(shù)據(jù)不能超過4k,同時因為每次http請求都會攜帶cookie,所以cookie只適合保存很小的數(shù)據(jù),如會話標(biāo)識。
sessionStorage和localStorage 雖然也有存儲大小的限制,但比cookie大得多,可以達(dá)到5M或更大。
③數(shù)據(jù)有效期不同
sessionStorage:僅在當(dāng)前瀏覽器窗口關(guān)閉前有效,自然也就不可能持久保持;
localStorage:始終有效,窗口或瀏覽器關(guān)閉也一直保存,因此用作持久數(shù)據(jù);
cookie只在設(shè)置的cookie過期時間之前一直有效,即使窗口或瀏覽器關(guān)閉。
④作用域不同
sessionStorage不在不同的瀏覽器窗口中共享,即使是同一個頁面;
localStorage 在所有同源窗口中都是共享的;
cookie也是在所有同源窗口中都是共享的。
Web Storage 支持事件通知機制,可以將數(shù)據(jù)更新的通知發(fā)送給監(jiān)聽者。
Web Storage 的 api 接口使用更方便。
到此這篇關(guān)于JavaScript本地儲存:localStorage、sessionStorage、cookie的使用的文章就介紹到這了,更多相關(guān)JavaScript本地儲存內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. WMLScript腳本程序設(shè)計第1/9頁2. 利用CSS3新特性創(chuàng)建透明邊框三角3. XML入門的常見問題(三)4. Vue3獲取DOM節(jié)點的3種方式實例5. 多級聯(lián)動下拉選擇框,動態(tài)獲取下一級6. 不要在HTML中濫用div7. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)8. vue實現(xiàn)將自己網(wǎng)站(h5鏈接)分享到微信中形成小卡片的超詳細(xì)教程9. 前端html+css實現(xiàn)動態(tài)生日快樂代碼10. 詳解CSS偽元素的妙用單標(biāo)簽之美
