业务须要在前端进行数据的缓存,到期就删除再进行获取新数据。前端
前端设置数据定时失效的能够有下面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