我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么实现localStorage的过期机制

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么实现localStorage的过期机制

今天小编给大家分享一下怎么实现localStorage的过期机制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    cookie过期机制

    我们知道Expires和Max-age都可以设置cookie的过期时间,那么两者存在什么样的异同点呢?

    expires和max-age的区别

    Expires 设置的是绝对值,即直接设置当前cookie在什么时候过期。 就像下面图中的这样, GMT格式。

    怎么实现localStorage的过期机制

    • Expires在HTTP/1.0中已经定义

    • max-age在HTTP/1.1中才有定义,为了向下兼容,仅使用max-age不够;

    Expires 设置一个绝对值,至少会带来两个方面的问题:

    • 客户端和服务端时间不同步的问题。往往表现为时区不同、客户端时间可被用户自由修改。

    • 很容易在配置后忘记具体的过期时间,导致过期来临出现浪涌现象(我的理解应该是同时大批量更新的问题)。

    Max-Age代表存活时间,记录的是一个相对时间(例如 6000s),起始时间点是服务器记录的requet-time。

    我们看到除了上面提到的两个值,还有 session, 这个值代表的意思就是在当前连接下,关闭浏览器窗口、断开与服务连接,该数据即失效。

    怎么实现localStorage的过期机制

    localStorage 数据过期

    localstorage本身是没有过期机制的,不过我们可以通过其他手段来扩展,使其能够满足我们的数据过期的需求。

    需求分析:

    • 存入数据时,顺带传入过去时间;

    • 获取数据时,判断当前是否过期,过期返回 undefined; 否则正常返回数据。

    动手实践

    localStorage 和 sessionStorage 都继承自 Storage 对象, 所以我们可以扩展Storage原型方法。

    setStorageWithAge(key, value, age) 方法, 接收三个参数,第三个参数代表最大过期时间,我们这里参考 cookie的 Max-Age 的实现,用相对时间来做。

    getStorageWithAge(key),内部直接判断时间是否过期来返回对应的值。

    代码实现:

    Storage.prototype.setStorageWithAge = (key, value, age) => {    if (isNaN(age) || age < 1) throw new Error("age must be a number");    const obj = {        data: value, //存储值        time: Date.now(), //存值时间戳        maxAge: age, //过期时间    };    localStorage.setItem(key, JSON.stringify(obj));};Storage.prototype.getStorageWithAge = key => {    const { data, time, maxAge } = JSON.parse(localStorage.getItem(key));    if (time + maxAge < Date.now()) {        localStorage.removeItem(key);        return undefined;    }    return data;};

    尝试调用:

    localStorage.setStorageWithAge('amingxiansen', '测试过期时间', 30000);localStorage.getStorageWithAge('amingxiansen');

    怎么实现localStorage的过期机制

    设定30s的过期时间,过期之前和过期之后获取到的结果。

    以上就是“怎么实现localStorage的过期机制”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    怎么实现localStorage的过期机制

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    怎么实现localStorage的过期机制

    今天小编给大家分享一下怎么实现localStorage的过期机制的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。cookie过
    2023-06-29

    Redis中的自动过期机制怎么使用

    本篇内容介绍了“Redis中的自动过期机制怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Redis中的自动过期机制实现需求:处理订单
    2023-06-30

    Linux内核驱动fsync机制实现过程是怎样的

    Linux内核驱动fsync机制实现过程是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。在Linux内核中的IO模型基本分为4类: 1、同步阻塞I/O 2、同步非阻塞I/
    2023-06-13

    Java中的回调机制怎么实现

    本篇内容介绍了“Java中的回调机制怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!模块间的调用在一个应用系统中,无论使用何种语言开发
    2023-06-02

    Angular中的Change Detection机制怎么实现

    这篇文章主要介绍“Angular中的Change Detection机制怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Angular中的Change Detection机制怎么实现”文章能帮
    2023-07-04

    NoSQL中的缓存机制怎么实现

    在NoSQL中,缓存机制可以通过以下几种方式实现:使用内存缓存:将数据存储在内存中,减少读写操作的时间。可以使用缓存库如Redis、Memcached等来实现内存缓存。数据分片:将数据按照一定规则分散存储在多个节点上,可以减少单个节点的负载
    NoSQL中的缓存机制怎么实现
    2024-05-07

    Vue3的响应式机制怎么实现

    这篇文章主要介绍了Vue3的响应式机制怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Vue3的响应式机制怎么实现文章都会有所收获,下面我们一起来看看吧。一、什么是响应式?在javascript中的变量是
    2023-07-04

    java超时机制怎么实现

    在Java中,可以使用java.util.Timer和java.util.concurrent.Executors等类来实现超时机制。java.util.Timer:创建一个定时器,使用schedule方法来安排超时操作。可以使用Timer
    java超时机制怎么实现
    2024-02-29

    Java中怎么实现SPI机制

    Java中怎么实现SPI机制,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。2 什么是SPI机制SPI是Service Provider Interface 的简
    2023-06-16

    Linux的直接I/O机制怎么实现

    这篇文章主要介绍了Linux的直接I/O机制怎么实现的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Linux的直接I/O机制怎么实现文章都会有所收获,下面我们一起来看看吧。直接 I/O 的动机在介绍直接 I/O
    2023-06-16

    java怎么实现Redis的LRU缓存机制

    本篇内容主要讲解“java怎么实现Redis的LRU缓存机制”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java怎么实现Redis的LRU缓存机制”吧!目录LRU概述使用LinkedHashM
    2023-06-20

    PHP中怎么实现缓存机制

    这篇文章给大家介绍PHP中怎么实现缓存机制,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。普遍缓存技术数据缓存:这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不
    2023-06-17

    MongoDB怎么实现软删除机制

    MongoDB并没有内置的软删除机制,但是可以通过以下几种方式来实现软删除:添加一个额外的字段来标记文档是否被删除。可以在每个文档中添加一个名为“deleted”的布尔字段,当需要软删除时将其设置为true。使用TTL(Time To Li
    MongoDB怎么实现软删除机制
    2024-04-19

    JAVA中怎么实现反射机制

    这期内容当中小编将会给大家带来有关JAVA中怎么实现反射机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JAVA反射机制定义:  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属
    2023-06-17

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录