时间:2021-05-18
思考点
在 web 开发中,我们知道 cookie、session、localStorage都可以保存用户的数据,cookie的 domain、path 限制了 cookie 的跨域, 有数量和大小的限制,可以设置有效时间。 session是后台在浏览器注入一个设置了 httponly 的不可读取的 cookie , session data由后台保存在数据库或者内存中,在web中,session 是靠 cookie 作为唯一标示来实现的,也可以设置过期时间。 localStorage 是 H5 的数据存储办法, 也是有大小限制的,但是不可以设置过期时间。
从我们接触前端起,第一个熟悉的存储相关的Cookie或者来分析我们生活中密切相关的淘宝、物流、闹钟等事物来说起吧,
以上种种,我们能得出一个结论任何一件事、一个行为动作,都有一个时间、一个节点,甚至我们可以黑localStorage,就是一个完善的API,为什么不能给一个设置过期的机制,因为sessionStorage、Cookie并不能满足我们实际的需求。
实现思路
抱歉,黑localStorage不完善,有点夸张了,综合上述的总结,问题就简单了,给localStorage一个过期时间,一切就都so easy ?到底是不是,来看看具体的实现吧:
简单回顾
重写 set(存入) 方法:
具体来看一下代码 :
重写 get(获取) 方法:
具体来看一下代码 :
get(key) { /* * get 获取方法 * @ param {String} key 键 * @ param {String} expired 存储时为非必须字段,所以有可能取不到,默认为 Date.now+1 * @ 由@IT·平头哥联盟-首席填坑官∙苏南 分享 */ const source = this.source, expired = source[`${key}__expires__`]||Date.now+1; const now = Date.now(); if ( now >= expired ) { this.remove(key); return; } const value = source[key] ? JSON.parse(source[key]) : source[key]; return value;}重写 remove(删除) 方法:
删除操作就简单了,;
remove(key) { const data = this.source, value = data[key]; delete data[key]; delete data[`${key}__expires__`]; return value;}优化点:
总结:
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
我们都知道localStorage不主动删除,永远不会销毁,那么如何设置localStorage的过期时间呢,今天我们来一起尝试一下!//封装过期控制代码fun
本文实例讲述了java设置session过期时间的实现方法,分享给大家供大家参考。具体实现方法如下:1、Timeoutinthedeploymentdescri
Expire为key设置过期时间Setex为key设置value值,并且,设置过期时间区别Setex是一个原子操作设置值,设置过期时间两个动作,会在同一时间完成
今天,我和大家分享一篇关于Redis有关过期键的内容,主要有四个内容:如何设置过期键如何取消设置的过期时间过期键的过期策略是怎样的RDB、AOF和复制对过期键的
本文实例讲述了jQuery控制cookie过期时间的方法。分享给大家供大家参考。具体分析如下:jquery.cookie()方法可以设置cookie,默认条件下