introduction

在 web 开发中,我们知道 cookie、session、localStorage 都可以保存用户的数据,cookie的 domain、path 限制了 cookie 的跨域, 有数量和大小的限制,可以设置有效时间。 session是后台在浏览器注入一个设置了 httponly 的不可读取的 cookie , session data由后台保存在数据库或者内存中,在web中,session 是靠 cookie 作为唯一标示来实现的,也可以设置过期时间。 localStorage 是 H5 的数据存储办法, 也是有大小限制的,但是不可以设置过期时间。 本文主要说的是如何自定义办法让 localStorage 实现过期时间。


module.exports = {// 过期时间,默认30天age: 30 * 24 * 60 * 60 * 1000,/*** 设置过期时间* @param age* @returns {exports}*/setAge: function (age) {this.age = age;return this;},/*** 设置 localStorage* @param key* @param value*/set: function (key, content) {localStorage.removeItem(key);let _time = new Date().getTime();let _age = this.age;let value = {};value._value = content;// 加入时间value._time = _time;// 过期时间value._age = _time + _age;localStorage.setItem(key, JSON.stringify(value));return this;},/*** 判断一个 localStorage 是否过期* @param key* @returns {boolean}*/isExpire: function (key) {var isExpire = true,value = localStorage.getItem(key),now = new Date().getTime();if (value) {value = JSON.parse(value);// 当前时间是否大于过期时间isExpire = now > value._age;} else {// 没有值也是过期}return isExpire;},/*** 获取某个 localStorage 值* @param key* @returns {*}*/get: function (key) {let isExpire = this.isExpire(key);let value = null;if (isExpire) return value;value = localStorage.getItem(key);value = JSON.parse(value);return value._value;}
};

usage

 var localstorage = require('./localstorage.js');
localstorage.setAge(24*60*60*1000).set('a': 'abc').set('b',{a:1,b:2})

在ios设备上无法重复setItem()

另外,在iPhone/iPad上有时设置setItem()时会出现诡异的QUOTA_EXCEEDED_ERR错误,这时一般在setItem之前,先removeItem()就ok了。

自定义办法设置 localStorage 过期时间相关推荐

  1. Vue - 路由导航守卫控制访问权限,设置 localStorage 过期时间

    Vue 路由导航守卫控制访问权限,设置 localStorage 过期时间 一. 路由导航守卫 二. 路由导航守卫 简单使用 三. 使用路由导航守卫设置 token 过期时间 导航守卫: https: ...

  2. 转:设置session过期时间

    原文地址:设置session过期时间 Session一直是我们做web项目经常使用的,以前没太注意,这次又细致的看了下! 1.session其实就是一个Map,键=值对,通过session.getAt ...

  3. cookielifetime php_php中实现精确设置session过期时间的方法

    大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一下session过期时间. 对此,可以在PHP中,设置php.ini,找到session. ...

  4. spring boot 缓存redis设置定时过期时间

    前言 本篇文章分享的就是spring boot中的一个轮子,spring cache注解的方式实现接口数据缓存.默认的配置想非常简单,但是有一个弊端是缓存数据为永久缓存,本次将介绍如何设置接口缓存数据 ...

  5. SpringBoot @Cacheable Redis 设置缓存过期时间

    1.x 设置 @Bean @Primary public CacheManager cacheManager(RedisTemplate redisTemplate) {RedisCacheManag ...

  6. 设置session时间 php,php中实现精确设置session过期时间的方法

    这篇文章主要介绍了php中实现精确设置session过期时间的方法,需要的朋友可以参考下 大多数据情况下我们对于session过期时间使用的是默认设置的时间,而对于一些有特殊要求的情况下我们可以设置一 ...

  7. 在Redis中设置了过期时间的Key,需要注意哪些问题?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:千山qianshan juejin.im/post/5d6b ...

  8. fastjson 添加key value_Redis中设置了过期时间的Key,那么你还要知道些什么?

    来源:http://i7q.cn/4NHBun 熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 1. DEL/SET/GE ...

  9. 在 Redis 中设置了过期时间的 Key,需要注意哪些问题?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

  10. 【干货】在Redis中设置了过期时间的Key怎么办?

    熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过期时间需要注意的事项 1. DEL/SET/GETSET等 ...

最新文章

  1. 进行博客博文管理的设计
  2. kotlin条件表达式
  3. OpenCL与异构并行计算
  4. Linux命令行文档查看cat、less、more、head、tail和图片查看
  5. 增加新分类daily——“每天学了啥?”
  6. SD卡读写扇区注意事项(转)
  7. java 获取插入数据的自增长id
  8. 作者:周宗放(1950-),男,电子科技大学经济与管理学院教授、博士生导师,风险分析与数据科学研究中心主任...
  9. java 属性访问修饰符_Java中的访问修饰符(二十七)
  10. matlab ssb,MatlabSSB信号的仿真分析.doc
  11. Ubuntu14.04快速搭建SVN服务器及日常使用
  12. 和大家一起分享几组Android游戏源码
  13. jsmind源码初探
  14. 百度信誉认证体系初级实名认证即将取消,这意味着什么?
  15. linux查找文件夹名称
  16. px和毫米的换算_关于PX像素、PT点数、CM厘米、MM毫米之间的换算
  17. Aggressive cows题目翻译
  18. 如何拼局域网所有ip_在windows命令行批量ping局域网内IP
  19. [视频]K8软件破解脱壳入门教程
  20. 监听浏览器返回,可清除历史记录(移动端:手势返回)(vue)

热门文章

  1. 菲波那契数列编程实现
  2. 两台windows笔记本创建家庭组实现文件共享
  3. How AI Is Transforming Medical Imaging
  4. Pyinstaller将外部数据文件打包到可执行文件中(onefolder or onefile)教程
  5. vba窗体 点击增加减少_EXCEL之VBA-窗体实例多页控件的基础应用
  6. wince系统usb刷机工具_中兴B860AV1.2-S905L刷机救砖教程,喜欢的分享一下
  7. java 性能测试文档模板_最好用的数据库文档生成工具
  8. centos rpm安装mysql5.6_CentOS 7下使用RPM安装MySQL 5.6
  9. python中使用Opencv进行人脸检测
  10. LUOGU P4027 [NOI2007]货币兑换 (斜率优化+CDQ分治)