利用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库的最佳方法详细说明及实现代码
Dec 28 Javascript
jquery 插件开发 extjs中的extend用法小结
Jan 04 Javascript
JS实现淘宝幻灯片效果的实现方法
Mar 22 Javascript
javascript垃圾收集机制与内存泄漏详细解析
Nov 11 Javascript
Jjcarousellite 实现图片列表滚动的简单实例
Nov 29 Javascript
一个获取第n个元素节点的js函数
Sep 02 Javascript
JavaScript不刷新实现浏览器的前进后退功能
Nov 05 Javascript
jQuery实现的表格前端排序功能示例
Sep 18 jQuery
JavaScript高阶教程之“==”隐藏下的类型转换
Apr 11 Javascript
国内常用的js类库大全(CDN公共库)
Jun 24 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
Aug 14 Javascript
Vue+Flask实现图片传输功能
Apr 01 Vue.js
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过滤所有恶意字符(批量过滤post,get敏感数据)
2014/03/18 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
javascript中的有名函数和无名函数
2007/10/17 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
通过js动态操作table(新增,删除相关列信息)
2012/05/23 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
jquery实现浮动的侧栏实例
2015/06/25 Javascript
javascript实现网页字符定位的方法
2015/07/14 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
JS实现导出Excel的五种方法详解【附源码下载】
2018/03/15 Javascript
JavaScript变量声明var,let.const及区别浅析
2018/04/23 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python 随机生成中文验证码的实例代码
2013/03/20 Python
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python解析nginx日志文件
2015/05/11 Python
Pycharm学习教程(3) 代码运行调试
2017/05/03 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
一道python走迷宫算法题
2018/01/22 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
施华洛世奇巴西官网:SWAROVSKI巴西
2019/12/03 全球购物
装潢设计实习自我鉴定
2013/09/19 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
不忘国耻振兴中华演讲稿
2014/05/14 职场文书
学生党员公开承诺书
2014/05/28 职场文书
市场调查策划方案
2014/06/10 职场文书
处级干部考察材料
2014/12/24 职场文书
观后感格式
2015/06/19 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP