利用js-cookie实现前端设置缓存数据定时失效


Posted in Javascript onJune 18, 2019

一、背景

业务需要在前端进行数据的缓存,到期就删除再进行获取新数据。

二、实现过程

前端设置数据定时失效的可以有下面2种方法:

1、当数据较大时,可以利用localstorage,存数据时候写入一个时间,获取的时候再与当前时间进行比较
2、如果数据不超过cookie的限制大小,可以利用cookie比较方便,直接设置有效期即可。
3、更多(请大神指点)

利用localstorage实现

localstorage实现思路:

1、存储数据时加上时间戳

在项目开发中,我们可以写一个公用的方法来进行存储的时候加上时间戳

export function setLocalStorageAndTime (key, value) {
 window.localStorage.setItem(key, JSON.stringify({ data: value, time: new Date().getTime() }))
}

项目中应用

存储

// 有数据再进行存储
   setLocalStorageAndTime('XXX', {name: 'XXX'})

读取

// 判断是否返回为null或者失效
getLocalStorageAndTime('XXX', 86400000)

2、获取数据时与当前时间进行比较

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
 }
}

利用cookie实现

我们用js-cookie这款插件来设置cookie,比较方便,可以自行查看文档。

js-cookie 的示例中只有以天为单位的有效期:

Cookies.set('name', 'value', { expires: 7 }); // 7 天后失效

官方文档只要设置天数,没有时分秒,这样我们想设置更小单位的时候无法下手,其实也可以设置时间戳来处理时间的,下面这种方式可以设置任意单位的有效期:

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)
}

三、总结

上面两个方法各有各的优点和缺点,如果小伙伴们有更好方法,麻烦留言互相学习

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery插件 tabBox实现代码
Feb 09 Javascript
jsp网页搜索结果中实现选中一行使其高亮
Feb 17 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
Angular2 (RC5) 路由与导航详解
Sep 21 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
详解vue后台系统登录态管理
Apr 02 Javascript
微信小程序开发之左右分栏效果的实例代码
May 20 Javascript
基于Node.js的大文件分片上传示例
Jun 19 Javascript
layer弹出层取消遮罩的方法
Sep 25 Javascript
微信小程序wxml列表渲染原理解析
Nov 27 Javascript
原生JS实现萤火虫效果
Mar 07 Javascript
vue-cli3单页构建大型项目方案
Apr 07 Javascript
vue中利用Promise封装jsonp并调取数据
Jun 18 #Javascript
实用Javascript调试技巧分享(小结)
Jun 18 #Javascript
Angular中innerHTML标签的样式不起作用的原因解析
Jun 18 #Javascript
小程序click-scroll组件设计
Jun 18 #Javascript
在JavaScript中如何访问暂未存在的嵌套对象
Jun 18 #Javascript
用Vue.js在浏览器中实现裁剪图像功能
Jun 18 #Javascript
JS删除String里某个字符的方法
Jan 06 #Javascript
You might like
php生成文件
2007/01/15 PHP
php实现在多维数组中查找特定value的方法
2015/07/29 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
javascript中不等于的代码是什么怎么写
2013/12/29 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
2014/06/06 Javascript
jQuery基础知识小结
2014/12/22 Javascript
jquery简单图片切换显示效果实现方法
2015/01/14 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
JS动画效果打开、关闭层的实现方法
2015/05/09 Javascript
基于JS实现的倒计时程序实例
2015/07/24 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
jQuery实现小火箭返回顶部特效
2020/02/03 jQuery
Python XML RPC服务器端和客户端实例
2014/11/22 Python
Python 抓取动态网页内容方案详解
2014/12/25 Python
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
2018/12/04 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
Python Django框架实现应用添加logging日志操作示例
2019/05/17 Python
python numpy实现文件存取的示例代码
2019/05/26 Python
python实现桌面气泡提示功能
2019/07/29 Python
python各类经纬度转换的实例代码
2019/08/08 Python
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
英文求职信写作小建议
2014/02/16 职场文书
建筑工地质量标语
2014/06/12 职场文书
班组拓展活动方案
2014/08/14 职场文书
十佳青年事迹材料
2014/08/21 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
湘江北去观后感
2015/06/15 职场文书
高中英语教学反思范文
2016/03/02 职场文书
Win11右下角图标点了没反应怎么办?Win11点击右下角图标无反应解决方法汇总
2022/07/07 数码科技