利用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 相关文章推荐
结合JQ1.9通过js正则判断各种浏览器版本的方法
Dec 30 Javascript
JS对img标签进行优化使用onerror显示默认图像
Apr 24 Javascript
搞定immutable.js详细说明
May 02 Javascript
使用JavaScript实现弹出层效果的简单实例
May 31 Javascript
jquery设置表单元素为不可用的简单代码
Jul 04 Javascript
easyui datagrid 大数据加载效率慢,优化解决方法(推荐)
Nov 09 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
Jan 03 Javascript
angular4实现tab栏切换的方法示例
Oct 21 Javascript
Vue单页应用引用单独的样式文件的两种方式
Mar 30 Javascript
微信小程序开发注意指南和优化实践(小结)
Jun 21 Javascript
浅谈layui里的上传控件问题
Sep 26 Javascript
vue自定义标签和单页面多路由的实现代码
May 03 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中的session永不过期的解决思路及实现方法分享
2011/04/20 PHP
解析如何修改phpmyadmin中的默认登陆超时时间
2013/06/25 PHP
php中JSON的使用与转换
2015/01/14 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
NiftyCube——轻松实现圆角边框
2007/02/20 Javascript
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
javascript jQuery $.post $.ajax用法
2008/07/09 Javascript
Javascript 陷阱 window全局对象
2008/11/26 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
jquery ajax post提交数据乱码
2013/11/05 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
2016/06/21 Javascript
jQuery bt气泡实现悬停显示及移开隐藏功能的方法
2016/07/12 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
jquery心形点赞关注效果的简单实现
2016/11/14 Javascript
使用jsonp实现跨域获取数据实例讲解
2016/12/25 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
2017/02/05 Javascript
微信小程序url与token设置详解
2017/09/26 Javascript
layui 实现table翻页滚动条位置保持不变的例子
2019/09/05 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
pandas ix &iloc &loc的区别
2019/01/10 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
python GUI库图形界面开发之PyQt5选项卡控件QTabWidget详细使用方法与实例
2020/03/01 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
物业电工岗位职责
2013/11/20 职场文书
售后求职信范文
2014/03/15 职场文书
节水倡议书范文
2014/04/15 职场文书
简易离婚协议书范本
2014/10/24 职场文书