如何通过设置失效时间清除本地存储的数据

一、使用`localStorage`和时间戳(JavaScript)

1. 原理

`localStorage`是浏览器提供的一种在本地存储数据的方式,数据没有过期时间限制。但是可以通过自己记录时间戳来模拟数据过期的功能。在存储数据时,同时存储一个时间戳,表示数据的存储时间。当读取数据时,检查当前时间与存储时间的差值,如果超过了设定的失效时间,就清除该数据。

2. 示例代码

存储数据并设置失效时间(以存储一个用户信息对象为例):

function setDataWithExpiry(key, value, ttl) {const now = new Date();const item = {value: value,expiry: now.getTime() + ttl,};localStorage.setItem(key, JSON.stringify(item));}// 存储一个用户对象,设置失效时间为1小时(1 * 60 * 60 * 1000毫秒)const user = { name: "John", age: 30 };setDataWithExpiry("user", user, 1 * 60 * 60 * 1000);

读取数据并检查失效时间:

function getData(key) {const itemStr = localStorage.getItem(key);if (!itemStr) {return null;}const item = JSON.parse(itemStr);const now = new Date();if (now.getTime() > item.expiry) {localStorage.removeItem(key);return null;}return item.value;}const user = getData("user");if (user) {console.log("用户信息有效:", user);} else {console.log("用户信息已过期或不存在");}

二、使用`sessionStorage`和定时器(JavaScript)

1. 原理

`sessionStorage`存储的数据在浏览器会话结束时会自动清除。可以结合定时器来提前清除数据。当存储数据时,同时启动一个定时器,定时器的时间为设定的失效时间,时间一到就清除存储的数据。

2. 示例代码

存储数据并设置定时器(以存储一个消息为例):

function setDataWithTimer(key, value, ttl) {sessionStorage.setItem(key, value);setTimeout(() => {sessionStorage.removeItem(key);}, ttl);}// 存储一个消息,设置失效时间为30分钟(30 * 60 * 1000毫秒)setDataWithTimer("message", "这是一个重要消息", 30 * 60 * 1000);

读取数据(注意没有过期检查,因为定时器会自动清除):

function getData(key) {return sessionStorage.getItem(key);}const message = getData("message");if (message) {console.log("消息:", message);} else {console.log("消息不存在");}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ImageNet 2.0?自动驾驶数据集迎来自动标注新时代

引言: 3DGS因其渲染速度快和高质量的新视角合成而备受关注。一些研究人员尝试将3DGS应用于驾驶场景的重建。然而,这些方法通常依赖于多种数据类型,如深度图、3D框和移动物体的轨迹。此外,合成图像缺乏标注也限制了其在下游任务中的…

stm32 智能语音电梯系统

做了个stm32智能语音控制的电梯模型,总结一下功能,源码用ST的HAL库写的,整体流程分明。 实物图 这个是整个板子的图片,逻辑其实并不复杂,只是功能比较多,在我看来都是一些冗余的功能,但也可能是…

多模态论文笔记——CogVLM和CogVLM2

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍多模态模型的LoRA版本——CogVLM和CogVLM2。在SD 3中使用其作为captioner基准模型的原因和优势。 文章目录 CogVLM论文背景VLMs 的任务与挑战现有方法及…

【react】Redux的设计思想与工作原理

Redux 的设计理念 Redux 的设计采用了 Facebook 提出的 Flux 数据处理理念 在 Flux 中通过建立一个公共集中数据仓库 Store 进行管理,整体分成四个部分即: View (视图层)、Action (动作)、Dispatcher (派发器)、Stor…

PCB层叠结构设计

PCB层叠结构设计 层叠结构设计不合理完整性相关案例:在构成回流路径时,由于反焊盘的存在,使高速信号回流路径增长,造成信号回流路径阻抗不连续,对信号质量造成影响。 PCB层叠结构实物:由Core 和 Prepreg&a…

爬虫在分析网站结构时的注意事项及代码示例

在进行网络爬虫的开发时,准确分析目标网站的结构是至关重要的一步。这不仅关系到爬虫的效率和效果,还涉及到是否能够合法合规地获取数据。本文将探讨在分析网站结构时需要注意的几个关键点,并提供相应的代码示例。 1. 网站的响应方式 首先&…

LLM训练的数据以及流程,怎么微调

LLM训练的数据以及流程,怎么微调 训练数据来源 互联网文本:从网页、新闻文章、博客、论坛等收集大量的文本内容。例如,Common Crawl项目会定期抓取大量的网页数据,为LLM训练提供了丰富多样的文本来源,这些数据涵盖了各种领域和主题,如科技、文化、娱乐、政治等.书籍文献…

【Cesium】七、设置Cesium 加载时的初始视角

文章目录 一、前言二、实现方法2.1 获取点位、视角2.2 设置 三、App.vue 一、前言 在前面的文章 【Cesium】三、实现开场动画效果 中有提到过 虽然也能回到初始点位但是有一个明显的动画过程。下面方法加载时就是在初始点位 没有动画效果,根据需求选择。 本文参考…

Edge安装问题,安装后出现:Could not find Edge installation

解决:需要再安装(MicrosoftEdgeWebView2RuntimeInstallerX64)。 网址:https://developer.microsoft.com/zh-cn/microsoft-edge/webview2/?formMA13LH#download 如果已经安装了edge,那就再下载中间这个独立程序安装就…

日期时间选择(设置禁用状态)

目录 1.element文档需要 2.禁用所有过去的时间 3.设置指定日期的禁用时间 <template><div class"block"><span class"demonstration">起始日期时刻为 12:00:00</span><el-date-pickerv-model"value1"type"dat…

【《python爬虫入门教程11--重剑无峰168》】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 【《python爬虫入门教程11--selenium的安装与使用》】 前言selenium就是一个可以实现python自动化的模块 一、Chrome的版本查找&#xff1f;-- 如果用edge也是类似的1.chrome…

grep -nr递归过滤文本时,如何忽略node_modules目录

在使用 grep -nr 递归过滤文本时&#xff0c;如果需要忽略 node_modules 目录&#xff0c;可以使用 --exclude-dir 参数&#xff0c;具体方法如下&#xff1a; 方法 1&#xff1a;使用 grep --exclude-dir grep -nr "your_search_text" --exclude-dirnode_modules .…

Spring Boot 3 文件下载、多文件下载以及大文件分片下载、文件流处理、批量操作 和 分片技术

在 Spring Boot 3 中&#xff0c;实现文件下载、多文件下载以及大文件分片下载需要结合以下功能&#xff1a;文件流处理、批量操作 和 分片技术。以下是详细实现方案&#xff1a; 1. 单文件下载 基础的单文件下载实现&#xff0c;可以参考以下代码&#xff1a; GetMapping(&…

系统架构风险、敏感点和权衡点的理解

系统架构是软件开发过程中的关键环节&#xff0c;它决定了系统的可扩展性、稳定性、安全性和其他关键质量属性。然而&#xff0c;架构设计并非易事&#xff0c;其中涉及的风险、敏感点和权衡点需要仔细考虑和处理。本文将详细探讨系统架构风险、敏感点和权衡点的概念&#xff0…

locate() 在MySQL中的用法

语法&#xff1a; 在MySQL中&#xff0c;LOCATE() 是一个字符串函数&#xff0c;用于返回一个子字符串在另一个字符串中第一次出现的位置。如果子字符串不存在&#xff0c;则返回0。这个函数的语法如下&#xff1a; LOCATE(substring, string[, start])substring&#xff1a;…

智能电话机器人优势是什么

在当今数字化转型加速的背景下&#xff0c;智能电话机器人&#xff08;IVR&#xff09;作为客户服务和业务流程优化的重要工具&#xff0c;正逐渐成为企业提升运营效率和服务质量的关键组成部分。 提高服务效率与响应速度 智能电话机器人能够自动处理大量重复性的查询和事务&…

leetcode热题100(79. 单词搜索)dfs回溯 c++

链接&#xff1a;79. 单词搜索 - 力扣&#xff08;LeetCode&#xff09; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的…

安全运营 -- splunk restapi 最小权限

0x00 背景 最小化权限原则&#xff0c;为每个功能&#xff0c;每个账户分配最小的权限。 0x01 实践 只需要7个 capability: Youll need to add certain capabilities to that user or that userss role(s).[capability::rest_apps_management] * Lets a user edit settings …

C++ 设计模式:备忘录模式(Memento Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 状态模式 备忘录模式&#xff08;Memento Pattern&#xff09;是一种行为设计模式&#xff0c;它允许在不破坏封装性的前提下捕获和恢复对象的内部状态。这个模式在需要保存和恢复对象状态的场景中非常有用&#xff…

用PicGo向Github图床上传图片,然后通过markdown语言显示图片

目录 下载PicGo软件图床GitHub设置在Markdown中使用图片 下载PicGo软件 先进入Pic官网&#xff0c;然后点击下图中的免费下载 然后点击下载下图中PicGo-Setup-2.4.0-beta.9.exe这个可执行软件 图床GitHub设置 点击PicGo中的图床设置&#xff0c;再点击其中的Github&#xff…