利用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 相关文章推荐
dojo 之基础篇(二)之从服务器读取数据
Mar 24 Javascript
JavaScript 实现??打印?理
Apr 28 Javascript
异步加载script的代码
Jan 12 Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 Javascript
禁止iframe脚本弹出的窗口覆盖了父窗口的方法
Sep 06 Javascript
jquery中push()的用法(数组添加元素)
Nov 25 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
Jun 20 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
原生JavaScript实现AJAX、JSONP
Feb 07 Javascript
Vue实现带进度条的文件拖动上传功能
Feb 23 Javascript
Vue下路由History模式打包后页面空白的解决方法
Jun 29 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 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
smarty实例教程
2006/11/19 PHP
php中使用Akismet防止垃圾评论的代码
2011/06/10 PHP
php CI框架插入一条或多条sql记录示例
2014/07/29 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php和editplus正则表达式去除空白行
2015/04/17 PHP
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
jQuery 性能优化指南(3)
2009/05/21 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
JavaScript模仿Pinterest实现图片预加载功能
2016/10/25 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
create-react-app构建项目慢的解决方法
2018/03/14 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
JQuery实现ajax请求的示例和注意事项
2018/12/10 jQuery
详解Vue2 添加对scss的支持
2019/01/02 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
浅谈layui框架自带分页和表格重载的接口解析问题
2019/09/11 Javascript
vue项目中自定义video视频控制条的实现代码
2020/04/26 Javascript
Vue中使用JsonView来展示Json树的实例代码
2020/11/16 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
Python获取远程文件大小的函数代码分享
2014/05/13 Python
安装docker-compose的两种最简方法
2019/07/30 Python
python正则爬取某段子网站前20页段子(request库)过程解析
2019/08/10 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
python 数据分析实现长宽格式的转换
2020/05/18 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
移交协议书
2014/08/19 职场文书
介绍长城的导游词
2015/01/30 职场文书
单位介绍信格式
2015/01/31 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
卫生主题班会
2015/08/14 职场文书