【js】前端持久化存储

news/2023/12/1 9:12:59

cookie

生命期为只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。 存放数据大小为4K左右 。有个数限制(各浏览器不同),一般不能超过20个。与服务器端通信:每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题。
http://www.runoob.com/js/js-c...

localStorage

localStorage生命周期是永久,这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。存放数据大小为一般为5MB,而且它仅在客户端(即浏览器)中保存,不参与和服务器的通信。

sessionStorage

为每一个数据源维持一个存储区域,在浏览器打开期间存在,包括页面重新加载

api

sessionStorage 和 localStorage 的用法基本一致,引用类型的值要转换成JSON

保存数据到本地

const info = {
        name: 'Lee',
        age: 20,
        id: '001'
    };
    sessionStorage.setItem('key', JSON.stringify(info));
    localStorage.setItem('key', JSON.stringify(info));

从本地存储获取数据

var data1 = JSON.parse(sessionStorage.getItem('key'));
var data2 = JSON.parse(localStorage.getItem('key'));

本地存储中删除某个保存的数据

sessionStorage.removeItem('key');
localStorage.removeItem('key');

删除所有保存的数据

sessionStorage.clear();
localStorage.clear();

监听本地存储的变化

window.addEventListener('storage', function (e) {
        console.log('key', e.key);
        console.log('oldValue', e.oldValue);
        console.log('newValue', e.newValue);
        console.log('url', e.url);
    })

indexedDB

在使用一个技术之前,先搞清楚它是什么,这对你的理解很重要,从DB就可以看出,它肯定是一个数据库,而说到数据库,有两种不同类型的数据库,就是关系型数据库和非关系型数据库,关系型数据库如Mysql、Oracle等将数据存储在表中,而非关系型数据库如Redis、MongoDB等将数据集作为个体对象存储。indexedDB就是一个非关系型数据库,它不需要你去写一些特定的sql语句来对数据库进行操作,因为它是nosql的,数据形式使用的是json,

意义

也许熟悉前端存储的会说,不是有了LocalStorage和Cookies吗?为什么还要推出indexedDB呢?其实对于在浏览器里存储数据,你可以使用cookies或local storage,但它们都是比较简单的技术,而IndexedDB提供了类似数据库风格的数据存储和使用方式。

首先说说Cookies,英文直接翻译过来就是小甜点,听起来很好吃,实际上并不是,每次HTTP接受和发送都会传递Cookies数据,它会占用额外的流量。例如,如果你有一个10KB的Cookies数据,发送10次请求,那么,总计就会有100KB的数据在网络上传输。Cookies只能是字符串。浏览器里存储Cookies的空间有限,很多用户禁止浏览器使用Cookies。所以,Cookies只能用来存储小量的非关键的数据。

其次说说LocalStorage,LocalStorage是用key-value键值模式存储数据,但跟IndexedDB不一样的是,它的数据并不是按对象形式存储。它存储的数据都是字符串形式。如果你想让LocalStorage存储对象,你需要借助JSON.stringify()能将对象变成字符串形式,再用JSON.parse()将字符串还原成对象。但如果要存储大量的复杂的数据,这并不是一种很好的方案。毕竟,localstorage就是专门为小数量数据设计的,所以它的api设计为同步的。而IndexedDB很适合存储大量数据,它的API是异步调用的。IndexedDB使用索引存储数据,各种数据库操作放在事务中执行。IndexedDB甚至还支持简单的数据类型。IndexedDB比localstorage强大得多,但它的API也相对复杂。对于简单的数据,你应该继续使用localstorage,但当你希望存储大量数据时,IndexedDB会明显的更适合,IndexedDB能提供你更为复杂的查询数据的方式。

indexedDB的特性

1.对象仓库
2.事务性
3.基于请求
4.异步

使用

  1. 打开数据库并且开始一个事务。
  2. 创建一个 object store。
  3. 构建一个请求来执行一些数据库操作,像增加或提取数据等。
  4. 通过监听正确类型的 DOM 事件以等待操作完成。
  5. 在操作结果上进行一些操作(可以在 request 对象中找到)

https://www.cnblogs.com/dengy...
https://segmentfault.com/a/11...

HTML5 Web SQL

HTML5已经会放弃Web SQL Database


http://www.niftyadmin.cn/n/3071190.html

相关文章

微服务配置中心是干啥的_Config:搭建配置中心微服务

创建模块创建配置中心微服务模块添加依赖&#xff0c;修改pom.xml<?xml version"1.0" encoding"UTF-8"?>"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:s…

计数场景的优化

前言 社交网络信息爆发&#xff0c;如何衡量你在社交舆论上的影响力&#xff1f;计数&#xff01; 计数是应用最方便、简单实现的数据挖掘应用&#xff0c;拿Facebook举例&#xff0c;你的Feed被评论多少次&#xff0c;转发多少次&#xff0c;赞多少次&#xff0c;被浏览多少次…

ajax输入匹配,php+ajax实时输入自动搜索匹配的方法

本文实例讲述了phpajax实输入自动搜索匹配的方法分享给大家供大家参考。具体分析如下&#xff1a;第一种方法利用了jquery autocomplete,第二种使用了jquery ajax,其实两个都差不多.最简单的办法我们就是直接使用jquery autocomplete方法了,如下在实例.html中,代码如下:复制代码…

create view 必须是查询批次中的第一个语句。_033、Oracle中的视图、序列和权限

1 视图(View) 1.1什么是视图可以通过创建表的视图来表现数据的逻辑子集或数据的组合。视图是基于表或另一个视 图的逻辑表&#xff0c;一个视图并不包含它自己的数据&#xff0c;它象一个窗口&#xff0c;通过该窗口可以查看或改变 表中的数据。视图基于其上的表称为基表。1.2视…

iOS疑问

1、__NSFrozenDictionaryM在数组类簇中是什么角色&#xff1f; 转载于:https://www.cnblogs.com/xianfeng-zhang/p/9257154.html

dedecms教程:dede织梦内容页{dede:pagebreak/}分页标签修改方法

今天在给一个客户定制模板时遇到一个关于 内容页 和图片集 分页过多 导致布局不美观的问题&#xff01;经过一翻修改 终于搞定&#xff01;让dede内容和图集分页和列表页分页一样展示具体修改方法如下首先找到&#xff1a;include/arc.archives.class.php 并且打开。第一步查找…

symfony ajax,Symfony2使用Ajax更改集合字段的类型

在我的项目Symfony2中&#xff0c;我有一个与实体Projet具有关系(1&#xff0c;n)的实体TypeConstruction。对象TypeConstruction可以是对象Immeuble或Villa ...所以对象Immeuble继承了对象TypeConstruction ...实体TypeConstruction的代码&#xff1a;/*** ORM\Entity* ORM\Ta…

rust闪退修复工具,如何修复Rust错误“找不到链接器'cc'”? Windows 10上的Debian版本?...

Im running Debian on Windows 10 (Windows Subsystem for Linux) and installed Rust using the command:curl https://sh.rustup.rs -sSf | shThere were no errors in the install, but when I tried to compile with rustc I got the error linker cc not found.解决方案Th…

从希腊到好莱坞 人工智能的七大历史时刻

你可能听过「技术奇点」&#xff0c;即本世纪某个阶段将出现超级智能&#xff0c;那时&#xff0c;技术将会以人类难以想象的速度飞速发展。同样&#xff0c;黑洞也是一个奇点&#xff0c;在其上任何物理定律都不适用&#xff1b;因此&#xff0c;技术奇点也是超越未来理解范围…

服务器主机系统还原了,服务器主机系统还原了6

服务器主机系统还原了6 内容精选换一换购买ECS时&#xff0c;仅当选择HSS支持的操作系统版本&#xff0c;才能选择免费的HSS基础版对ECS进行安全加固。HSS支持的操作系统版本如下所示。已停止服务的Linux系统版本或者Windows系统版本&#xff0c;与Agent可能存在兼容性问题&…

简支梁挠度计算公式推导_桥梁动挠度理论分析

桥梁动挠度理论分析1 截面位移公式 挠度作为变形的一种描述形式&#xff0c;可以评价桥梁质量及运营状态&#xff0c;反映桥梁的刚度&#xff0c;是桥梁整体变形最明显的反应。 截面的挠度即梁横截面的形心沿垂直于梁轴线方向的位移&#xff0c;是衡量梁变形的基本量之一。结构…

hystrix项目实战

闲话少说&#xff1a; 总共分6步&#xff1a; &#xff08;1&#xff09;添加hystrix依赖以及监控的依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-hystrix</artifactId><version>1.4.…

【python】一些好的学习网址

http://www.cnblogs.com/BeginMan/p/3179302.html http://www.cnblogs.com/huxi/category/251137.html http://www.cnblogs.com/hongten/p/hongten_python_first_month.html 转载于:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/3905455.html

db2数据库还原找不到文件_为什么Win7找不到itunes备份文件在哪?

为什么Win7找不到itunes备份文件在哪?下面为大家讲讲。Windows 7 电脑&#xff1a;C:Users你登录电脑的用户名&#xff08;默认是Administrator&#xff09;AppDataRoamingApple ComputerMobileSyncBackupXP 电脑&#xff1a;C:Documents and Settings你登录电脑的用户名&…

mvc ajax跨域,卓景京干货丨SpringMVC利用@CrossOrigin注解解决ajax跨域

原标题&#xff1a;卓景京干货丨SpringMVC利用CrossOrigin注解解决ajax跨域1. 什么是跨域跨域&#xff0c;即跨站HTTP请求(Cross-site HTTP request)&#xff0c;指发起请求的资源所在域不同于请求指向资源所在域的HTTP请求。当一个请求url的协议、域名、端口三者之间任意一个与…

原生js实现点击下载图片

点击下载&#xff0c;则可下载上级兄弟节点 <div class"form-group"><div><h3>申请人信息</h3><div class"sq_info"><ul><li><span>姓名&#xff1a;</span><p>张三</p></li><…
最新文章