給本地緩存localStorage添加過期時間

項目需要,要把部分數據寫到緩存里,以便隨時取用.但又要保證其時效性,要一定時間后再次進入獲取最新數據,所以就參考資料,改了個給localstorage添加過期時間的方法.代碼如下,為了方便,就不貼圖片了.直接貼代碼

export class myStorage{

? ? //設置緩存

? ? setItem(params:object){

? ? ? ? let obj = {

? ? ? ? ? ? key:'',

? ? ? ? ? ? value:'',

? ? ? ? ? ? expires:"",//過期時間;

? ? ? ? ? ? startTime:new Date().getTime()//記錄何時將值存入緩存,毫秒級

? ? ? ? }

? ? ? ? let options:any = {};

? ? ? ? //將obj和傳進來的params合并

? ? ? ? Object.assign(options,obj,params);

? ? ? ? if(options.expires){

? ? ? ? //如果options.expires設置了的話

? ? ? ? //以options.key為key,options為值放進去

? ? ? ? ? ? localStorage.setItem(options.key,JSON.stringify(options));

? ? ? ? }else{

? ? ? ? //如果options.expires沒有設置,就判斷一下value的類型

? ? ? ? ? ? let type = Object.prototype.toString.call(options.value);

? ? ? ? ? ? //如果value是對象或者數組對象的類型,就先用JSON.stringify轉一下,再存進去

? ? ? ? ? ? if(type == '[object Object]'){

? ? ? ? ? ? ? ? options.value = JSON.stringify(options.value);

? ? ? ? ? ? }

? ? ? ? ? ? if(type == '[object Array]'){

? ? ? ? ? ? ? ? options.value = JSON.stringify(options.value);

? ? ? ? ? ? }

? ? ? ? ? ? localStorage.setItem(options.key,options.value);

? ? ? ? }

? ? }

? ? //獲取緩存

? ? getItem(key:string){

? ? ? ? let item:any = localStorage.getItem(key);

? ? ? ? if(item){//判斷緩存是否存在

? ? ? ? ? ? //先將拿到的試著進行json轉為對象的形式

? ? ? ? ? ? try{

? ? ? ? ? ? ? ? item = JSON.parse(item);

? ? ? ? ? ? }catch(error){

? ? ? ? ? ? //如果不行就不是json的字符串,就直接返回

? ? ? ? ? ? ? ? item = item;

? ? ? ? ? ? }

? ? ? ? ? ? //如果有startTime的值,說明設置了失效時間

? ? ? ? ? ? if(item.startTime){

? ? ? ? ? ? ? ? let date = new Date().getTime();

? ? ? ? ? ? ? ? //何時將值取出減去剛存入的時間,與item.expires比較,如果大于就是過期了,如果小于或等于就還沒過期

? ? ? ? ? ? ? ? if(date - item.startTime > item.expires){

? ? ? ? ? ? ? ? //緩存過期,清除緩存,返回null

? ? ? ? ? ? ? ? ? ? localStorage.removeItem(key);

? ? ? ? ? ? ? ? ? ? return null;

? ? ? ? ? ? ? ? }else{

? ? ? ? ? ? ? ? //緩存未過期,返回值

? ? ? ? ? ? ? ? ? ? return item.value;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }else{

? ? ? ? ? ? //如果沒有設置失效時間,直接返回值

? ? ? ? ? ? ? ? return item;

? ? ? ? ? ? }

? ? ? ? }else{

? ? ? ? ? ? return null;

? ? ? ? }

? ? }

? ? //移出緩存

? ? removeItem(key:string){

? ? ? ? localStorage.removeItem(key);

? ? }

? ? //移出全部緩存

? ? clear(){

? ? ? ? localStorage.clear();

? ? }

}


注:詳見https://blog.csdn.net/zhaoxiang66/article/details/86703438

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容