業務須要在前端進行數據的緩存,到期就刪除再進行獲取新數據。前端
前端設置數據定時失效的能夠有下面2種方法:npm
在項目開發中,咱們能夠寫一個公用的方法來進行存儲的時候加上時間戳緩存
export function setLocalStorageAndTime (key, value) {
window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))
}
複製代碼
存儲bash
// 有數據再進行存儲
setLocalStorageAndTime('XXX', {name: 'XXX'})
複製代碼
讀取cookie
// 判斷是否返回爲null或者失效
getLocalStorageAndTime('XXX', 86400000)
複製代碼
export function getLocalStorageAndTime (key, exp = 86400000) {
// 獲取數據
let data = window.localStorage.getItem(key)
if (!data) return null
let dataObj = JSON.parse(data)
// 與過時時間比較
if (new Date().getTime() - dataObj.time > exp) {
// 過時刪除返回null
removeLocalStorage(key)
console.log('信息已過時')
return null
} else {
return dataObj.data
}
}
複製代碼
咱們用js-cookie這款插件來設置cookie,比較方便,能夠自行查看文檔。 js-cookie 的示例中只有以天爲單位的有效期:學習
Cookies.set('name', 'value', { expires: 7 }); // 7 天后失效
ui
官方文檔只要設置天數,沒有時分秒,這樣咱們想設置更小單位的時候沒法下手,其實也能夠設置時間戳來處理時間的,下面這種方式能夠設置任意單位的有效期:spa
let seconds = 10;
let expires = new Date(new Date() * 1 + seconds * 1000);
Cookies.set('username', 'tanggaowei', { expires: expires }); // 10 秒後失效
複製代碼
貼上利用js-cookie的封裝, 記得 npm i js-cookie
插件
import Cookies from 'js-cookie'
/*
* 設置cookies
* */
export function getCookies (key) {
return Cookies.get(key)
}
/*
* 設置Cookies
* */
export function setCookies (key, value, expiresTime) {
let seconds = expiresTime
let expires = new Date(new Date() * 1 + seconds * 1000)
return Cookies.set(key, value, { expires: expires })
}
/*
* 移除Cookies
* */
export function removeCookies (key) {
return Cookies.remove(key)
}
複製代碼
上面兩個方法各有各的優勢和缺點,若是小夥伴們有更好方法,麻煩留言互相學習localstorage