JS:存儲數據用哪個?localStorage、sessionStorage有什麼區別?

2020-12-24 IT熊孩子

進入我的主頁,查看更多JS的分享!我的代碼有多短,本篇內容就有多短!

對比cookie:

cookie會與伺服器通信;storage只存在客服端,不參與伺服器通信;同樣受同源策略影響,只有在域名一致的情況下才能查看到對應的數據;navigator.cookieEnabled檢測是否啟用了cookie,也就說cookie可以認為控制是否啟用,而storage則是自動啟用,不會被人為關閉。(比如隱私模式下)一、localStorage - 沒有時間限制的數據存儲

知識點:

存儲 key/value 對的數據;保存的數據沒有過期時間,直到手動去刪除(包括清空瀏覽器緩存);拓展了 cookie 的 4K 限制,可存儲的容量,各瀏覽器的大小不統一;只支持 string 類型的存儲(目前所有的瀏覽器中都會把localStorage的值類型限定為string類型),比如數字,存儲後變為字符串;在瀏覽器的隱私模式下面是不可讀取的;本質上是對字符串的讀取,如果存儲內容多的話會消耗內存空間,會導致頁面變卡;不能被爬蟲抓取到語法:setItem(key,value)、getItem(key)、removeItem(key)使用演示:

//定義Keyconst userk = "uk2020";const tokenk = "tk2020";const objK = "ok2020";//存儲localStorage.setItem(userk, "以氣御碼");localStorage.setItem(tokenk, "14332239527007001");localStorage.setItem(objK, { ids: 996, title: "世界還在,我在加班"});//讀取let userName = localStorage.getItem(userk);let token = localStorage.getItem(tokenk);let obj = localStorage.getItem(objK);console.log(userName, token, obj);//輸出:以氣御碼 14332239527007001 [object Object]在瀏覽器的開發者工具,Application可以查看:

存儲結構一目了然,值自動轉為字符串,因此數組、對象數據的存儲,一般需要轉換:

//轉換 JSON格式的字符串localStorage.setItem(objK, JSON.stringify({ ids: 996, title: "世界還在,我在加班" }));//獲取 let obj = localStorage.getItem(objK);console.log(JSON.parse(obj));//輸出{ ids: 996 title: "世界還在,我在加班"}也可以搭配URIComponent使用:

//轉換localStorage.setItem(objK, encodeURIComponent(JSON.stringify({ ids: 996, title: "世界還在,我在加班" })));//獲取let obj = localStorage.getItem(objK);console.log(JSON.parse(decodeURIComponent(obj)));參考文檔(菜鳥教程:https://www.runoob.com/jsref/prop-win-localstorage.html)

二、sessionStorage

知識點:

針對一個 session 的數據存儲,即臨時存儲,窗口關閉就會被清除(不是瀏覽器被關閉哦);在瀏覽器的隱私模式下面是不可讀取的;語法:setItem(key,value)、getItem(key)、removeItem(key)使用方式與localStorage是一樣的:

//Keyconst userk = "uk2020";const tokenk = "tk2020";const objK = "ok2020";//存儲sessionStorage.setItem(userk, "以氣御碼");sessionStorage.setItem(tokenk, "14332239527007001");sessionStorage.setItem(objK, encodeURIComponent(JSON.stringify({ ids: 996, title: "世界還在,我在加班"})));//獲取let userName = sessionStorage.getItem(userk);let token = sessionStorage.getItem(tokenk);let obj = sessionStorage.getItem(objK);console.log(userName, token, JSON.parse(decodeURIComponent(obj)));三、各瀏覽器的兼容性代碼

這裡就不貼代碼了,因為是文檔上有的(放在下面了),在離開之前記得點個讚咩!

參考文檔(MDN: https://developer.mozilla.org/zh-CN/docs/Web/API/Storage/LocalStorage)

相關焦點

  • 瀏覽器緩存庫設計總結(localStorage/indexedDB)
    ,當然目前主流的雲平臺支持對象存儲,對媒體資源有不錯的優化,有條件的可以採用這種方案,比如七牛雲,阿里的對象存儲oss.localStorage 類似 sessionStorage,但其區別在於:存儲在 localStorage 的數據可以長期保留;而當頁面會話結束——也就是說,當頁面被關閉時,存儲在 sessionStorage 的數據會被清除 。
  • Kubernetes的Local Persistent Volumes使用小記
    最重要的區別,就是Local PV和具體節點是有關聯的,這意味著使用了Local PV的pod,重啟多次都會被Kubernetes scheduler調度到同一節點,而如果用的是HostPath Volume,每次重啟都可能被Kubernetes scheduler調度到新的節點,然後使用同樣的本地路徑;當我們要用HostPath Volume的時候
  • SAP WM Storage type search配置裡的storage class & WPC
    SAP WM Storage Type Search配置裡的Storage Class & WPC標記在如下的配置裡,有2個欄位storage class 和WPC(water pollution class).參與storage type search策略的配置
  • Golang與亞馬遜對象存儲服務AmazonS3快速入門
    S3簡介Amazon Simple Storage Service (Amazon S3) 是一種對象存儲服務,提供行業領先的可擴展性、數據可用性、安全性和性能。這意味著各種規模和行業的客戶都可以使用 S3 來存儲並保護各種用例(如數據湖、網站、行動應用程式、備份和還原、存檔、企業應用程式、IoT 設備和大數據分析)的數據,容量不限。Amazon S3 提供了易於使用的管理功能,因此您可以組織數據並配置精細調整過的使用權限控制,從而滿足特定的業務、組織和合規性要求。
  • Filecoin Storage:收集最佳存儲礦工
    提供數據存儲服務的Filecoin礦工,可以使用該應用向客戶瀏覽的市場宣布其價格和可用性,客戶與礦工通過存儲交易和檢索數據合作。V丨ipfssyFilecoin Storage應用程式通過Codefi Activate啟用,Codefi Activate是一個促進分散網絡啟動,並加速網絡用戶參與的平臺。
  • Storage management technology
    The incredible growth in the amount of data that must be backed up, and the requirements of the storage-management applications that were developed to manage that growth, created the demand for such speedy
  • IBM Spectrum Storage軟體定義存儲未來
    【IT168 評論】如今,數據中心向虛擬化和雲計算的不斷演進,應用多元化以及快速普及的移動終端和社交網絡,正在徹底改變當今IT格局。隨著數據量的爆炸性增長和數據的重要性不斷增加,以及雲平臺使用的逐步廣泛,雲平臺的規模逐步擴大,對數據快速準確存儲的要求越來越高,存儲逐漸成為了雲平臺發展的瓶頸。
  • Nimble Storage撬開中國混合型存儲市場_存儲在線
    CASL將快閃記憶體讀緩存技術 與寫入優化數據布局技術相結合,加速了客戶的應用。即時生成的快照使您的備份和恢復簡單易行,同時高效的數據複製可以幫您輕鬆的進行災難恢復。 Nimble存儲系統智能易用,極大地簡化了數據存儲和管理工作,降低了運維開銷。另外,用戶能夠使用類似 VMware vCenter 的工具進行容量管理、監控和數據保護。
  • 華為FusionStorage 6.0新存儲特性解讀
    正因為如此,華為設計了「存儲融合資源池解決方案」,以保障「數據按需服務」得以實現。華為存儲融合資源池解決方案的出現,歸根結底還是源於大量的用戶需求。在當今的數據中心,計算類應用已經可以通過虛擬機的方式實現快速部署;網絡類應用也通過「網絡功能虛擬化NFV」將網絡軟體部署到虛擬機的方式;而存儲類應用,目前卻沒有什麼好的應對機制。
  • Electrochemical energy storage: Supercapacitor application of...
    報告題目:Electrochemical energy storage: Supercapacitor application of vertical graphene nanosheets 報告人:Prof.
  • 技術分享 | 滅霸與普羅米修斯之無限存儲的高可用方案
    背景  隨著公司各個環境的伺服器數量增加,部署有多套 Prometheus(包括生產、測試、Tidb、Kubernetes 等)集群,在一定集群規模下,普通 Prometheus 集群的承載能力會出現短板(查詢速度慢、OOM、以及存儲空間不夠等問題)。加上公司需要保存雙十一、雙十二等活動期間的監控數據,來統計活動期間同比環比的監控報表。
  • 匠心故事 | 百鍊成鋼的FusionStorage 8.0
    曹長斌表示,「通過對IO通道從頭到尾的追蹤,可以具體定位到整個IO通道哪個模塊、具體模塊中哪個具體函數導致的數據不一致,層層推進來解決問題。」在解決數據不一致性的過程中,華為存儲研發團隊面臨最大的困難就是:在高性能、大並發的讀寫數據中去尋找哪個IO導致的數據不一致。「數據不一致之所以是存儲業界最難最大的挑戰,就是因為存在巨大的不確定性。
  • 華為FusionStorage 8.0:哪有什麼一夜成名?其實全是百鍊成鋼
    曹長斌表示,「通過對IO通道從頭到尾的追蹤,可以具體定位到整個IO通道哪個模塊、具體模塊中哪個具體函數導致的數據不一致,層層推進來解決問題。」在解決數據不一致性的過程中,華為存儲研發團隊面臨最大的困難就是:在高性能、大並發的讀寫數據中去尋找哪個IO導致的數據不一致。「數據不一致之所以是存儲業界最難最大的挑戰,就是因為存在巨大的不確定性。
  • 解決VUE頁面刷新,數據丟失「建議收藏」
    在vue項目中有時候會遇到一個問題,就是進行頁面刷新的時候,導致頁面的數據丟失,出現這個問題的原因是因為當用vuex做全局狀態管理的時候,store中的數據是保存在運行內存中的,頁面刷新時會重新加載vue實例,store中的數據就會被重新賦值,因此數據就丟失了,解決方式如下:方法一: