indexDB

  1. 是一种低级api ,用于客户端存储大量结构化数据。该api使用索引来实现对该数据的高性能搜索。
  2. 为应用提供离线版本

indexdb 特点

  1. 键值存储。 IndexedDB 内部采用对象仓库(object store)存放数据。所有类型的数据都可以直接存入,包括 JavaScript 对象。对象仓库中,数据以"键值对"的形式保存,每一个数据记录都有对应的主键,主键是独一无二的,不能有重复,否则会抛出一个错误。

  2. 异步。 IndexedDB 操作时不会锁死浏览器,用户依然可以进行其他操作,这与 LocalStorage 形成对比,后者的操作是同步的。异步设计是为了防止大量数据的读写,拖慢网页的表现。

  3. 支持事务。 IndexedDB 支持事务(transaction),这意味着一系列操作步骤之中,只要有一步失败,整个事务就都取消,数据库回滚到事务发生之前的状态,不存在只改写一部分数据的情况。

  4. 同源限制 IndexedDB 受到同源限制,每一个数据库对应创建它的域名。网页只能访问自身域名下的数据库,而不能访问跨域的数据库。

  5. 储存空间大 IndexedDB 的储存空间比 LocalStorage 大得多,一般来说不少于 250MB,甚至没有上限。

  6. 支持二进制储存。 IndexedDB 不仅可以储存字符串,还可以储存二进制数据(ArrayBuffer 对象和 Blob 对象)。

代码示例:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>cookie/localStorage/sessionStorage</title>
</head>
<body><script>// cookiedocument.cookie = "name=qiphon"document.cookie = "gender=male"// console.log(document.cookie)// localStorage(sessionStorage 的api与localStorage相同)// if(window.localStorage){//     localStorage.setItem('name','qiphon')//     localStorage.setItem('age',25)//     console.log(localStorage.getItem('name'))//     console.log(localStorage.getItem('age'))// }// indexDBfunction openDB(name,cb){var db = window.indexedDB.open(name)var db1;db.onerror = function(event){//error事件表示打开数据库失败。console.log(event)}db.onsuccess = function(event){//success事件表示成功打开数据库。// console.log(event)db1 = event.target.resultcb(db1)}db.onupgradeneeded = function(event){  // 如果指定的版本号,大于数据库的实际版本号,就会发生数据库升级事件upgradeneeded。// 监听版本变化 (只有版本变化的时候才能createObjectStore)console.log(event)let db = event.target.result;if(!db.objectStoreNames.contains('persion')){// 判断表格是否存在// 创建对象仓库 (keyPath 主键)var store = db.createObjectStore('person', { keyPath: 'id' });// 如果没有合适的主键,可以选择自动生成主键// var objectStore = db.createObjectStore('person',{ autoIncrement:true});// 三个参数分别为索引名称、索引所在的属性、配置对象(说明该属性是否包含重复的值)。var titleIndex = store.createIndex('by_title','title',{unique:true})store.put({title:'the world',author:'Mr Jhon',id:0})store.put({title:'the world2',author:'Mr Jhon',id:1})}}}openDB('qiphon',function(db){setTimeout(function(){dbData(db)},2000)})// 读取数据function dbData(db){console.log(db)// 增删数据记录,需要通过事务完成var transaction = db.transaction('person','readwrite')var store = transaction.objectStore('person')// 获取数据// var req = store.get(1)// req.onsuccess = function(event){//     console.log(event.target.result)// }// 添加数据// store.add({//     title:'new world',//     id:3// })// 删除数据// store.delete(1)// 更新数据// store.get(0).onsuccess = function(event){//     books = event.target.result;//     console.log(books)//     books.author = 'James'//     store.put(books).onsuccess = function(event){//         console.log('update',event)//     }// }// 遍历所有数据// store.openCursor().onsuccess = function(event){//     var cursor = event.target.result;//     if(cursor){//         console.log(cursor)//         cursor.continue()//     }else{//         console.log('not anything yet')//     }// }// 通过索引查找var index = store.index('by_title')var req = index.get('the world')req.onsuccess = function(event){var result = event.target.result;console.log(result)}}</script>
</body>
</html>

indexDB 前端操作相关推荐

  1. 钉钉免登陆前端操作详解

    在钉钉免登陆中,前端操作是很重要的,因为在前端我们需要调用钉钉的jsapi来获取code,而这个code值是至关重要的.所以我 再次清清楚楚的解析一遍前端的操作.下面的是我写的demo,我讲以这个de ...

  2. 使用redis实现防止重复提交,成功解决方案 春风化作秋雨 2018-09-13 18:09:52 13787 收藏 6 分类专栏: 解决方案 版权 1、业务场景 业务开发中,常常涉及对前端操作

    使用redis实现防止重复提交,成功解决方案 1.业务场景 业务开发中,常常涉及对前端操作进行重复校验,避免重复提交造成数据重复操作.比如转账操作,因为网络卡顿,客户连续点击转账按钮,造成多次转成:又 ...

  3. php indexdb,前端存储 (4) - IndexDB

    IndexDB的出现 是为了存储更大量的结构化数据 简介 IndexedDB是一个事务型数据库系统,类似于基于SQL的RDBMS. 然而不同的是它使用固定列表(只有 key,value),Indexe ...

  4. php是做前端还是后端,在后端准备数据还是在前端操作? - php

    好的,我会尽量保持简洁(我倾向于胡扯). 我正在制作与电影相关的Web应用程序,因此正在向我的应用程序的后端(PHP)发出AJAX请求,它正在向我返回数据.此刻,我将完整的JSON返回我的前端(jQu ...

  5. dynamic 365 前端操作

    dynamic 365 常用js操作和方法 dynamic 365 常用js dynamic 365 常用js //获取当前用户id Xrm.Page.context.getUserId(): //获 ...

  6. 京东 PC 首页 2019 改版前端操作总结

    距离上次首页改版,已有2年3个月零五天.相比上次改版对首页整体框架.开发流程的大刀阔斧(前两次改版总结传送门:2016版,2017版),这次的改版看起来显得有点像跳水--没什么水花.在站在巨人肩膀上的 ...

  7. jquery-学生列表增删编辑,纯前端操作

    >编写思路,题目素材 <!DOCTYPE html> <!--作者:pyhui--> <html lang="zh-CN"> <he ...

  8. table 列表前端操作保留状态,实现来回切换返显

    使用场景: table 列表中 用户操作时改变记录状态时,不实时调接口,切换到别的页数能来回返显操作过的状态,最后通过提交按钮一起提交 $set使用解决 如果在实例创建之后修改属性状态到实例上,它不会 ...

  9. 前端操作pdf文件实现添加水印效果

    在 Vue 中集成pdf-lib ,实现给 PDF文件 添加水印 需求详解 前端下载或预览 PDF 文件的时候,需要加上水印,用于保护机密信息并表明法律文件的有效性 插件介绍 pdf-lib :在任何 ...

最新文章

  1. 造完家怎么拆东西_地弹簧玻璃门怎么拆?地弹簧玻璃门拆除注意事项有哪些?...
  2. atitit,it人怎么样才容易事业成功?? 有以下五种性格的人容易成功
  3. dlib疲劳检测_使用OpenCv和Dlib进行打哈欠检测
  4. NPM流行包再起波澜:维护人员对俄罗斯用户发特定消息,谁来保证开源可信?...
  5. ELK详解(十三)——Logstash收集Nginx日志实战
  6. 自定义新浪微博分享按钮
  7. php验证手机号码 函数,PHP 匹配电话,手机,400号码 函数 及正则。很管用。
  8. Exception:org.eclipse.m2e.wtp.MarkedException: Unable to configure OHBC
  9. centos下ppt转图片
  10. 中国尼龙搭扣市场趋势报告、技术动态创新及市场预测
  11. Python小白入门分享
  12. 进阶训练赛(四)题解
  13. 文献阅读07期:智网中动态电价对太阳能板普及的影响
  14. 关于基金的各种名词含义及来源,小白如何入门基金
  15. admi后台 vue_Vue+ElementUI的后台管理框架
  16. UnityWebRequest断点下载文件
  17. 阿里fastjson的用法
  18. php图片写入带问号_PHP实现文字写入图片
  19. 在VisualStudioCode软件中使用babel命令后显示模块不存在的解决方案
  20. 【C语言】函数指针(指向函数的指针)

热门文章

  1. Excel 多sheet分解成多个单独excel文件(VBA记录)
  2. SVN提交代码报错,怎么破?
  3. asp群发微信公众号模板消息代码
  4. bzoj 4972 小Q的方格纸
  5. IPv6地址格式及分类解析
  6. CNN中的卷积的意义
  7. 如何量化企业的声誉?
  8. 我的世界服务器全自动刷铁轨机,我的世界全自动刷铁轨机怎么做_我的世界全自动刷铁轨机图文攻略_玩游戏网...
  9. 谨以此首篇Blog祝亲爱的老婆生日快乐!
  10. 谈谈数据库连接池的原理