2.1 Web Storage的作用 可以将数据存储在本地,如保存用户的偏好设置、复选框的选中状态、文本框默认填写的值等。...而sessionStorage的数据保存在内存中,当浏览器关闭后,内存将被自动清除。...当浏览器标签页关闭后,sessionStorage中存储的数据将被自动清除。 如果打开了不同的标签页,即使是同一页面,sessionStorage对象也是不同的。...由于sessionStorage无法在不同标签页的网页中互相访问数据,当使用storage事件时,可以将页面放在标签创建的框架中,此时在框架内通过storage事件可以监听外层页面的sessionStorage...有效时间:localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据。sessionStorage 数据在页面会话结束时会被清除。
之前一刷新页面,直接被清除,后来发现是浏览器插件引入的js脚本,导致出现问题,在思考,如何验证网页是否被插入js脚本,即,类似于掘金社区的,每次访问都会提示,被插入脚本。...此有一个专业术语,叫SRI SRI 原理,使用哈希值验证前端资源的完整性。...,那些不能访问。...,渲染同一个页面,即使是两个标签,其sessionStorage不可共享,但是iframe可以共享,localStorage受到同源的影响,可以共享。...一个demo localStorage.setItem("x", 1); // 设置值 localStorage.getItem("x"); // 读取值 // 枚举所有的名值对 for(var i
安全:PWA使用https进行通信加密,防止了被第三方获取数据以及数据被篡改 推送:做到在不打开网页的前提下,推送新的消息 可安装:能够将 Web像 APP 一样添加到桌面,可以在主屏幕上创建图标 为什么是渐进式...通过 PUSH API,当订阅了推送服务后,可以使用推送方式唤醒 Service Worker 以响应来自系统消息传递服务的消息,即使用户已经关闭了页面。...Cache.add(request) 抓取这个URL, 检索并把返回的response对象添加到给定的Cache对象.这在功能上等同于调用 fetch(), 然后使用 Cache.put() 将response...示例中是缓存用于离线时使用的静态资源,这也是最常见的行为....版本更新 更新静态资源:缓存的资源随着版本的更新会过期, 所以会根据缓存的字符串名称(这里变量为 cacheStorageKey, 值用了 "minimal-pwa-1")清除旧缓存, 可以遍历所有的缓存名称逐一判断决决定是否清除
如果 key 对应的 value 获取不到,则返回值是 null。...eg:使用 lz-string 库的 compress() 函数将数据进行压缩,并将压缩后的数据存储到 localStorage 中。...在开发使用中,直接获取 localStorage.getItem('isFavor') 作为默认值展示,切换后使用 localStorage.setItem() 方法更新保存内容。...eg:当第一次或者清空缓存后登录,页面需要出现操作指南和用户手册的弹窗说明。在开发使用中,注意存储的数据类型为 string,转成布尔值是为了在插件中方便控制弹窗的显示隐藏。...,会遇到一些经常访问但返回数据不更新的接口,这种特别适合用做页面缓存,只在页面打开的时候访问一次,其他时间获取缓存数据即可。
以下是锁定它的方法一直在localStorage中存储敏感数据,认为它既安全又方便?其实不然。一个错误就可能暴露一切:用户令牌、私钥等等。...设置一个值,它会持久化,之后可以检索。localStorage.setItem("userToken", "super-secret-token");任何在页面上运行的脚本都能访问它。...const stolenToken = localStorage.getItem("userToken");OWASP 2023年报告将XSS列为顶级Web漏洞,53%的测试应用存在可被利用的缺陷。...选项2:sessionStoragesessionStorage类似localStorage,但在标签页关闭时清除。它是敏感数据的短期保险箱。...data) return null; const { value, timestamp, expiresIn } = JSON.parse(data); // 自动清除旧数据 if (
*/ static get(key: string): any { const value = localStorage.getItem(key); if (value) {...e) { console.warn(`Unable to store value for key ${key}:`, e); } }; // 清除本地存储中的值...= () => { localStorage.removeItem(key); value.value = defaultValue; }; // 在组件挂载时从本地存储中加载值...load(); // 在组件卸载时将值保存到本地存储 // 注意:这里不能使用 `onUnmounted` 钩子,因为组件实例被销毁后无法再访问到 `key` 和 `defaultValue...` window.addEventListener("beforeunload", save); return {value, clear}; } 2、使用示例
解决 Vuex 中异步问题:获取最新的 Token 值 在使用 Vuex 管理状态时,有时会遇到异步问题,特别是在获取异步数据并将其保存到 Vuex 中后,立即获取该数据时可能会出现问题。...在这篇文章中,我们将讨论如何解决这个问题,并确保在获取 Token 值时始终获取到最新的值。 问题背景 假设我们有一个 Vuex 模块 auth,其中包含了登录、登出和检查 Token 的方法。...在登录成功后,我们将 Token 保存到 Vuex 的状态中,并且在需要的时候从状态中获取 Token 值。...由于异步问题,当我们立即调用 getToken 方法时,它可能会返回 null 值,因为在调用 getToken 时,SET_TOKEN 方法可能还没有被调用。...这样,在调用 getToken 时,它会返回最新的 Token 值。
localStorage简介 使用localStorage可以在浏览器中存储键值对的数据。...但是它们之间的区别是:存储在localStorage的数据可以长期保留;而当页面会话结束(也就是当页面被关闭)时,存储在sessionStorage的数据会被清除。...另外需要注意的是,localStorage中的键值对总是以字符串的形式存储,并且只能访问当前域名下的数据,不能跨域名访问。...还可以使用getItem方法读取对应键的值数据,比如: var name = localStorage.getItem('name'); 可以使用removeItem方法移除对应的键,比如: localStorage.removeItem...惰性删除 惰性删除是指,某个键值过期后,该键值不会被马上删除,而是等到下次被使用的时候,才会被检查到过期,此时才能得到删除。
例如,https请求就能发送ccokie,而http请求则不会,添加secure字样即可开启 这些参数在使用中使用分号隔开 1.3 JavaScript中cookie的使用 这里将结合自动登录功能来谈论...当作为值被调用时,可以返回当前地址下的所有cookie,为字符串类型 注意:存在多个cookie一起返回时,用; 隔开。...name1=value1;name2=value2,因此获取cookie值要经历以下几步 利用字符串中split方法,将返回的字符串通过;标识符进行分割返回数组 再通过遍历分割好的cookie数组,逐一判断需要获取的...,避免空格对后面处理值造成影响 在第6行中使用到了字符串方法indexOf,用于查找字符串中是否存在我们需要的获取的cookie名,找得到返回值就为首次出现的索引,否则为-1 inedxOf方法可返回某个指定的字符串值在字符串中首次出现的位置...,需要将获取数据经过JSON.parse转化为对象再使用 2.2 sessionStorage对象 又叫临时存储,顾名思义只是暂时存储,在浏览器会话窗口关闭后,会全部清除 操作方法和localStorage
缓存将尝试回收最近没有使用或总体上很少使用的缓存项。——警告:在缓存项的数目达到限定值之前,缓存就可能进行回收操作——通常来说,这种情况发生在缓存项的数目逼近限定值时。...在权重限定场景中,除了要注意回收也是在重量逼近限定值时就进行了,还要知道重量是在缓存创建时计算的,因此要考虑重量计算的复杂度。...使用CacheBuilder构建的缓存不会"自动"执行清理和回收工作,也不会在某个缓存项过期后马上清理,也没有诸如此类的清理机制。...在刷新操作进行时,缓存仍然可以向其他线程返回旧值,而不像回收操作,读缓存的线程必须等待新值加载完成。 如果刷新过程抛出异常,缓存将保留旧值,而异常会在记录到日志后被丢弃[swallowed]。...从某种意义上说,其实是支持的:如果CacheLoader抛出InterruptedException,Cache.get将立刻返回(就和其他异常情况一样);此外,在加载缓存值的线程中,Cache.get
,否则会一直保存在用户的浏览器中,即使关闭浏览器或重启电脑也不受影响。...事务处理: 内置事务机制,确保数据一致性,即使在复杂的多步骤操作中也能保证数据完整性。...4️⃣ 最佳实践 数据序列化: 将复杂数据结构(如对象、数组)转化为字符串(如JSON)再存入Web Storage。 兼容性检查: 使用typeof localStorage !...== 'undefined'等条件判断,确保在不支持本地存储的环境中优雅降级。 容量监控: 实时跟踪存储使用情况,避免超过浏览器限制。 数据清理: 定期清理不再需要的旧数据,保持存储空间整洁。...5️⃣ 安全性与隐私 同源策略: 保障了不同源之间的数据隔离,防止恶意站点访问其他网站的本地存储数据。 HTTPS: 使用HTTPS加密通信,保护本地存储数据在传输过程中的安全。
但也存在一定的缺陷,例如: 清除浏览器缓存 手动删除本地存储空间 这两种清除浏览器数据的行为,都会导致使用 webStorage 核心 API 写入的数据被清除掉,再次刷新浏览器时,数据为空。...在使用时可依据存储数量的大小酌情考虑是否使用浏览器本地存储。 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。...XXXStorage.getItem('todo'); 该方法接受一个键名作为参数,返回键名对应的值。...LocalStorage 存储的内容,需要手动清除才会消失。 XXXStorage.getItem(key) 如果 key 对应的 value 获取不到,那么 getItem 的返回值是 null。...建议大家将本次分享中优化后的代码片段替换原代码文件片段,再使用npm run serve重启服务,亲自实践感受下浏览器刷新是否还会丢失新增的 todo 数据。
localStorage 是浏览器自带的一个属性,只读的localStorage 属性允许你访问一个Document 源(origin)的对象 Storage;存储的数据将保存在浏览器会话中。...(需要注意,和 js 对象相比,键值对总是以字符串的形式存储意味着数值类型会自动转化为字符串类型). localStorage 的使用也非常简单,分为存入和读取,可以将其绑定在事件方法中。...arr = JSON.parse(localStorage.getItem("key")); 就是读取浏览器中参数名为 key 的参数值。...在一些场景下非常好用,比如开发一个油猴脚本等等。 清除 localStorage,分为清除所以的存储值和清除某个特定的 key。...// 清除本地存储中的所有值 localStorage.clear(); // 本地存储中删除特定项 localStorage.removeItem(key);
模板字符串 2.1 普通字符串 在JS中的普通字符串和Python中的类似,可以使用单引号也可以使用双引号。...结构赋值 主要针对数组和对象 4.1 数组解构 将arr 中的3个值赋值给变量a,b,c 将arr中的后面两变量赋值给变量b,c 将arr中的第一个变量赋值给a,剩余变量赋值给v const arr =...数组的重要方法(重点) 6.1 添加 push和unshift 有返回值(操作后的数组长度) const arr = [1,2,3] //尾插 arr.push(4) //头插 arr.unshift...(0) 6.2 删除 pop和shift 有返回值(操作后的数组长度) const arr = [1,2,3] //尾删 arr.pop() //头删 arr.shift() 6.3 任意位置的添加与删除...存储限额大于Cookie localStorage即使浏览器关闭并重新打开也仍然存在。 存储的数据没有过期日期,只能通过JS、清除浏览器缓存或者本地的数据来清除。
createWebHistory(), routes, }); router.beforeEach((to, from) => { if (to.path === '/login') { // 在登录页做清除操作...,如清除token等 } if (!...使用场景:部分页面不需要登录,部分页面需要登录才能访问 修改 router/routes.ts // 权限校验 const auth = () => { if (!...router 3.x中,可通过tag属性更改标签名,event属性更改事件名 在vue router 4.x中,这两个属性已被删除,通过作用域插槽(子组件给父组件传值的插槽)实现自定义导航标签 示例...; 3、修改 App.vue 如果 localStorage.getItem(‘role’) 的值不为 admin ,直接访问 /home/manage,会返回 404 页面
3.强缓存 浏览器在第一次访问接口后的response headers里会携带一些字段,这些字段决定关于这个请求的缓存情况, 与强缓存相关的header字段有两个: 1、expires:过气网红,这是http1.0...类似,与Last-Modified不一样的是,当服务器返回304 Not Modified的响应时,由于ETag重新生成过,response header中还会把这个ETag返回,即使这个ETag跟之前的没有变化...html5新增本地存储,localStorage生命周期是永久,除非主动清除localStorage信息,否则这些信息将永远存在。...存放数据大小为一般为5MB,sessionStorage仅在当前会话下有效,关闭页面或浏览器后被清除。而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。...*利用JSON.stringify**将对象转换成字符串; //利用**JSON.parse**将字符串转换成对象 // 2、从本地存储获取数据 localStorage.getItem('key');
本地存储 随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,HTML5规范提出了相关解决方案。...数据存储在用户浏览器中 2、设置、读取方便、甚至页面刷新不丢失数据 3、容量较大,sessionStorage约5M、localStorage约20M 4、只能存储字符串,可以将对象JSON.stringify() 编码后存储...1.2.window.sessionStorage 1、生命周期为关闭浏览器窗口 2、在同一个窗口(页面)下数据可以共享 3、以键值对的形式存储使用 存储数据: sessionStorage.setItem... 1.3.window.localStorage 1、声明周期永久生效,除非手动删除 否则关闭页面也会存在 2、可以多窗口(页面)共享(同一浏览器可以共享) 3、以键值对的形式存储使用...// localStorage.getItem("uname"); console.log(localStorage.getItem("uname"));
ok,到这里基本上正常使用这个是没有问题了,那么有的人说了,这个做登录是没有问题,用户刷新页面也是对的,但是按照这个说法,用户就是注销了,退出了,是不是重新进入还是会有自己的信息,那岂不是很不安全,也不是常规的做法啊...有以下的几种方法: ①clear():删除所有值。 ②getItem(name):根据指定的名字name获取对应的值 ③key(index):在指定的数字位置获取该位置的名字。...④removeItem(name):删除由name指定的名值对 ⑤setItem(name,value):为指定名字设置一个对应的值 下面我们介绍sessionstorage 用法是一样,区别在于他是只要关闭浏览器就是清除数据...sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。 3) 只在本地存储。...seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。
6、兼容问题: 有人会说本地存储是H5的新贵,但是对于老、旧的浏览器来说怎么办?那就不用老古董浏览器呗,或者使用cookie作为替代。...因为大多使用localStorage是用来存储字符串的,在其他编译型的语言看来,存储字符串能做些什么,但在javascript身上,旧大放光彩,可以存储JSON格式的字符串来扩展应用,可以存储类名变量值等等信息再通过...但是localStorage类在不支持H5的时候使用不了,所以我们将localStorage的四个函数封装一下,使得当浏览器或客户端不兼容localStorage时自动切换到Cookies存储。...把做好的myStorage.js文件引入到HTML文档后,用法就是跟localStorage的函数一样,不信你试试: (1)myStorage.setItem(键名,键值) 在本地客户端存储一个字符串类型的数据...对应的值(很像PDO的预处理)。注意,executeSql不能单独使用,需要在事务transaction函数下使用。