利用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 相关文章推荐
JavaScript中的isXX系列是否继续使用的分析
Apr 16 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
js相册效果代码(点击创建即可)
Apr 16 Javascript
解决jquery版本冲突的有效方法
Sep 02 Javascript
js获取页面传来参数的方法
Sep 06 Javascript
BootStrap Table对前台页面表格的支持实例讲解
Dec 22 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
微信小程序 MD5的方法详解及实例代码
Mar 10 Javascript
详解Vue.js分发之作用域槽
Jun 13 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
Jan 27 Javascript
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP的魔术常量__METHOD__简介
2014/07/08 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
jquery中attr和prop的区别分析
2015/03/16 Javascript
基于JavaScript实现 网页切出 网站title变化代码
2016/04/03 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
大白话讲解JavaScript的Promise
2017/04/06 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
ES6 class类链式继承,实例化及react super(props)原理详解
2020/02/15 Javascript
vue.js watch经常失效的场景与解决方案
2021/01/07 Vue.js
vue如何使用rem适配
2021/02/06 Vue.js
遗传算法之Python实现代码
2017/10/10 Python
python实现感知器
2017/12/19 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
纯css3实现的动画按钮的实例教程
2014/11/17 HTML / CSS
Osklen官方在线商店:巴西服装品牌
2019/04/25 全球购物
中学生自我评价范文
2014/02/08 职场文书
法人代表证明书
2014/09/18 职场文书
公司内部升职自荐信
2015/03/27 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
女性励志书籍推荐
2019/08/19 职场文书