客户端存储方法介绍
很多時候我們在做前端開發的過程中需要緩存一些數據到我們客戶端。那么就需要了解一下storage方面的知識了。本文將介紹幾種不同的緩存方式。
文章目錄
- 查看有哪些存儲方式。
- 一、Local Storage
- 特點:
- 使用方法:
- 二、Session Storage
- 特點:
- 使用方法和localStorage一樣
- localStorage與sessionStorage的注意點:
- 三、Cookie
- 特點:
- 弊端:
- 使用方法:
- 測試cookie是否被客戶端禁用了:
- 四、安全方面的考慮
- 五、三者的應用場景
- 六、額外內容
- 測試storage的容量上限
- 獲取storage的已使用大小
- 剩余容量那就用上面倆個的結果相減即可得出
查看有哪些存儲方式。
打開我們的控制臺 -> Application
我們先來介紹三個我們經常用的:
一、Local Storage
特點:
使用方法:
// 保存數據到 sessionStorage localStorage.setItem('key', 'value'); // 如果要傳遞object或者array之類的話請使用JSON.stringify localStorage.setItem('key', JSON.stringify({a: 'xx'})) localStorage.setItem('key', JSON.stringify([1, 2, 3]))// 從 sessionStorage 獲取數據 const data = localStorage.getItem('key'); // 解析obj,arr之類的數據 const objData = JSON.parse(localStorage.getItem('key'));// 從 sessionStorage 刪除保存的數據 localStorage.removeItem('key');// 從 sessionStorage 刪除所有保存的數據 localStorage.clear();二、Session Storage
特點:
使用方法和localStorage一樣
localStorage與sessionStorage的注意點:
應注意,無論數據存儲在 localStorage 還是 sessionStorage ,它們都特定于頁面的協議。
三、Cookie
特點:
弊端:
使用方法:
保存:
document.cookie = 'key=value;expires=xx;path=yy;domain=zz;secure'; //key --cookie名 //value --cookie值 //expires --過期時間(失效時間),可選,當不選時,在會話結束失效 //path --路徑,可選,不選時,和當前資源路徑保持一致 //domain --域,可選 //secure --安全鏈接,可選修改:
同路徑下同名cookie覆蓋保存
刪除:
同路徑下同名cookie覆蓋保存,將失效時間設置為當前時間之前
查詢:
測試cookie是否被客戶端禁用了:
function CookieEnable() {let result = false;if (navigator.cookiesEnabled) return true;document.cookie = "testcookie=yes;";let cookieSet = document.cookie;if (cookieSet.indexOf("testcookie=yes") > -1) result=true;document.cookie = "";return result; } if(!CookieEnable()){alert("對不起,您的瀏覽器的Cookie功能被禁用,請開啟"); }四、安全方面的考慮
我們需要了解,并不是什么數據都適合放在 Cookie、localStorage 和 sessionStorage 當中的。當我們使用它們的時候,需要時刻注意是否有代碼存在 XSS 注入的風險。因為只要打開控制臺,別人就隨意修改它們的值,也就是說如果你的網站中有 XSS 的風險,它們就能對你的 storage 肆意妄為。所以千萬不要用它們存儲敏感數據。
五、三者的應用場景
因為考慮到每個 HTTP 請求都會帶著 Cookie 的信息,所以 Cookie 當然是能精簡就精簡啦,比較常用的一個應用場景就是判斷用戶是否登錄。針對登錄過的用戶,服務器端會在他登錄時往 Cookie 中插入一段加密過的唯一辨識單一用戶的辨識碼,下次只要讀取這個值就可以判斷當前用戶是否登錄啦。曾經還使用 Cookie 來保存用戶在電商網站的購物車信息,如今有了 localStorage,似乎在這個方面也可以給 Cookie 放個假了~
而另一方面 localStorage 適合存儲那些基本上不會變化的數據,比如某個版本的信息內容。換一次版本更改一次【這個判斷可以和后端商量著做】。
sessionStorage適合存儲臨時的緩存數據,比如各個頁面間的輸入輸出內容緩存之類的。
六、額外內容
測試storage的容量上限
測試瀏覽器存儲上限的鏈接:https://arty.name/localstorage.html
當然我們也可以自己寫代碼測試:
直接扔到控制臺執行即可。
稍等一段時間后我們就發現結果已經出來了:【倆分鐘之內】
上面的是測試localStorage。sessionStorage同理也是這么測試,改一下即可:
獲取storage的已使用大小
這是localStorage的,sessionStorage的請自行更改代碼。
(function(){if(!window.localStorage) {console.log('瀏覽器不支持localStorage');}var size = 0;for(item in window.localStorage) {if(window.localStorage.hasOwnProperty(item)) {size += window.localStorage.getItem(item).length;}}console.log('當前localStorage已使用容量為' + (size / 1024).toFixed(2) + 'KB'); })()剩余容量那就用上面倆個的結果相減即可得出
總結
- 上一篇: java实现数据库自动异地备份
- 下一篇: intel——5G的通信网络架构及平台