indexeddb

前端数据库——WebSQL和IndexedDB

戏子无情 提交于 2020-08-20 09:13:30
一、WebSQL WebSQL是前端的一个独立模块,是web存储方式的一种,我们调试的时候会经常看到,只是一般很少使用。并且,当前只有谷歌支持,ie和火狐均不支持。 我们对数据库的一般概念是后端才会跟数据库打交道,进行一些业务性的增删改查。而这里的数据库也不同于真正意义上的数据库。 废话少说,先出招吧: 主要方法: openDatabase :这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。 transaction :这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。 executeSql :这个方法用于执行实际的 SQL 查询。 openDatabase() 方法对应的五个参数说明: 数据库名称 版本号 描述文本 数据库大小 创建回调 transaction执行数据库操作,操作内容就是正常的数据库的增删改查。 executeSql是执行具体的sql,参数是1.sql语句(大写?),2.语句中的变量,3.执行后的回调,4. 示例: 1 var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024 ); 2 db.transaction( function (tx) { 3 tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique,

前端数据库——WebSQL和IndexedDB

心已入冬 提交于 2020-08-20 09:12:14
一、WebSQL WebSQL是前端的一个独立模块,是web存储方式的一种,我们调试的时候会经常看到,只是一般很少使用。并且,当前只有谷歌支持,ie和火狐均不支持。 我们对数据库的一般概念是后端才会跟数据库打交道,进行一些业务性的增删改查。而这里的数据库也不同于真正意义上的数据库。 废话少说,先出招吧: 主要方法: openDatabase :这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。 transaction :这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。 executeSql :这个方法用于执行实际的 SQL 查询。 openDatabase() 方法对应的五个参数说明: 数据库名称 版本号 描述文本 数据库大小 创建回调 transaction执行数据库操作,操作内容就是正常的数据库的增删改查。 executeSql是执行具体的sql,参数是1.sql语句(大写?),2.语句中的变量,3.执行后的回调,4. 示例: 1 var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024 ); 2 db.transaction( function (tx) { 3 tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique,

前端数据库——WebSQL和IndexedDB

[亡魂溺海] 提交于 2020-08-20 09:11:26
一、WebSQL WebSQL是前端的一个独立模块,是web存储方式的一种,我们调试的时候会经常看到,只是一般很少使用。并且,当前只有谷歌支持,ie和火狐均不支持。 我们对数据库的一般概念是后端才会跟数据库打交道,进行一些业务性的增删改查。而这里的数据库也不同于真正意义上的数据库。 废话少说,先出招吧: 主要方法: openDatabase :这个方法使用现有的数据库或者新建的数据库创建一个数据库对象。 transaction :这个方法让我们能够控制一个事务,以及基于这种情况执行提交或者回滚。 executeSql :这个方法用于执行实际的 SQL 查询。 openDatabase() 方法对应的五个参数说明: 数据库名称 版本号 描述文本 数据库大小 创建回调 transaction执行数据库操作,操作内容就是正常的数据库的增删改查。 executeSql是执行具体的sql,参数是1.sql语句(大写?),2.语句中的变量,3.执行后的回调,4. 示例: 1 var db = openDatabase('mydb', '1.0', 'Test DB', 2 * 1024 * 1024 ); 2 db.transaction( function (tx) { 3 tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique,

互动直播中的前端技术 -- 即时通讯

删除回忆录丶 提交于 2020-08-16 22:27:42
前言 在疫情期间,上班族开启了远程办公,体验了各种远程办公软件。老师做起了主播,学生们感受到了被钉钉支配的恐惧,歌手们开启了在线演唱会,许多综艺节目也变成了在线直播。在这全民互动直播的时期,我们来聊聊互动直播中的即时通讯技术在前端中的使用。 即时通讯技术 即时通讯(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。如何来实现呢,通常我们会使用服务器推送技术来实现。常见的有以下几种实现方式。 轮询(polling) 这是一种我们几乎都用到过的的技术实现方案。客户端和服务器之间会一直进行连接,每隔一段时间就询问一次。前端通常采取setInterval或者setTimeout去不断的请求服务器数据。 优点:实现简单,适合处理的异步查询业务。 缺点:轮询时间通常是死的,太长就不是很实时,太短增加服务器端的负担。不断的去请求没有意义的更新的数据也是一种浪费服务器资源的做法。 长轮询(long-polling) 客户端发送一个请求到服务端,如果服务端没有新的数据,就保持住这个连接直到有数据。一旦服务端有了数据(消息)给客户端,它就使用这个连接发送数据给客户端。接着连接关闭。 优点:对比轮询做了优化,有较好的时效性。 缺点:占较多的内存资源与请求数。 iframe流

大型Electron应用本地数据库技术选型

こ雲淡風輕ζ 提交于 2020-08-16 11:00:05
开发一个大型Electron的应用,或许需要在客户端存储大量的数据,比如聊天应用或邮件客户端 可选的客户端数据库方案看似很多,但一一对比下来,最优解只有一个 接下来我们就一起来经历一下这个技术选型的过程: 排除:把数据以Json的形式存储在文件中 以这种方式存储一些用户的配置信息是完全没问题的(用户名、家庭住址、是否开启免打扰模式等) 但要用这种方式存储大量解构化的数据,就非常不科学了 主要原因是: 用这种方案操作数据是需要把文件中的所有数据都加载到客户端电脑的内存中去的 由于没有索引机制,关联查询、条件查询等操作效率不高, 更新了某项数据之后,要持久化更新操作,又要重写整个文件。 PS: 如果你的应用操作的数据量不多, 你可以选择类似lowdb( https://github.com/typicode/lowdb )这样的工具, 在一定程度上环节这些困难 排除:LocalStorage、SessionStorage、WebSql、Cookies Cookies存储容量太小,只能存4kb的内容,而且每次与服务端交互,同域下的Cookie还会被携带到服务端,也没有关联查询、条件查询的机制 LocalStorage存储容量也很小,大概不会超过10M,它是以键值对形式保存数据的,同样也没有关联查询、条件查询的机制 SessionStorage最大的问题是,每次关闭应用程序

美摄云非编系统——网页端实时编辑渲染方案

為{幸葍}努か 提交于 2020-08-14 06:49:30
​ 大家好,我是北京美摄网络科技有限公司的研发总监黄裔,本次我分享的主题是美摄云非编系统,是一种web端视音频实时编辑渲染方案。 本次内容分为五个部分:一是美摄云非编方案的技术背景,也就是目前web端视音频编辑的现状以及我们采用新方案的原因;二是美摄云非编的技术整体方案,包括前端、后端及整体技术框架;三是美摄云非编方案的缓存机制,也是美摄云非编实时性的一个重要的保障;四是美摄云非编的整体工作流程;五是一些技术展望和本次问题的讨论实践。 1. 背景介绍 1.1 公司背景介绍 北京美摄科技有限公司,成立于2014年10月,是一家从新奥特集团独立出来,专注于视音频领域开发20年的智能视音频整体解决方案服务商。服务内容包括移动端视音频图像智能处理、识别以及深度学习等,服务领域涵盖移动APP、智能手机、智能硬件、广电及通信运营商等行业客户。 1.2 技术背景 这部分我将介绍云非编相关的技术背景,在web端的非线性编辑软件中,传统的方法是由服务器端进行音视频解码、特效处理和图像渲染,再将音视频流混合后发送给前端进行播放和显示,也就是说,web端只要做一次编辑就要和服务端进行一次通信,服务端再进行一系列的特效处理才能返回给web端预览,对网络依赖度过高,实时性也很差,客户体验很不好。 美摄云非编系统是基于WebAssembly技术实现了web端图像的实时渲染

浏览器数据库 IndexedDB 入门教程

孤人 提交于 2020-08-10 21:22:44
一、概述 随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引。所以,需要一种新的解决方案,这就是 IndexedDB 诞生的背景。 通俗地说,IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。 IndexedDB 具有以下特点。 (1)键值对储存。 IndexedDB 内部采用对象仓库(object store)存放数据。所有类型的数据都可以直接存入,包括 JavaScript 对象。对象仓库中,数据以"键值对"的形式保存,每一个数据记录都有对应的主键,主键是独一无二的,不能有重复,否则会抛出一个错误。 (2)异步。 IndexedDB 操作时不会锁死浏览器,用户依然可以进行其他操作,这与 LocalStorage 形成对比

Using IndexedDB to save images

蓝咒 提交于 2020-08-04 04:47:50
问题 <img src="picture_1.png" id="imgHolder"/> Would like to save image with indexedDB in database named Images on button click. <button id="write" onclick="saveToDB()">Save To DB</button> Another button will read image from Images database to display in <div id="resultContent"/> . <button id="read" onclick="readFromDB()">Read from DB</button> 回答1: General idea is: Create a database with a specified name. Use indexedDB.open() for that. Create an objectStore. Read a file(image in your case) as blob

用友web前端面试知识点

亡梦爱人 提交于 2020-07-28 02:49:04
前端面试题目及知识点 可以获取元素e相邻的下一个元素: e.nextSibling() 代码var foo = “10”+3-“1”;console.log(foo);执行后,foo的值为 (102 ) 关于定位: static 定位 :静态定位的元素不会受到 top, bottom, left, right影响。HTML 元素的默认值,即没有定位,遵循正常的文档流对象。 fixed 定位 :元素的位置相对于浏览器窗口是固定位置。 relative 定位 :相对定位元素的定位是相对其正常位置。 absolute 定位 :绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于 sticky 定位 :粘性定位。 常用的git操作有哪些( ) Add、Push、Fetch、Merge、Tag p元素不能包含任何块级元素(包括自身) a元素可以包含任何其他元素(除了自身) document是文档(整个DOM树)的根节点 http状态码描述: 200 OK 204 No Content 请求已成功处理,但不含实体的主体部分。 206 Partial Content 客户端进行范围请求,成功执行GET请求。 301 Moved Permanently 永久性重定向。 302 Found 临时性重定向。 400 Bad Request 请求报文存在语法错误。

How do I check if an indexedDB instance is open?

╄→尐↘猪︶ㄣ 提交于 2020-07-20 17:18:52
问题 Suppose I have an instance of an indexedDB object. Is there a simple way of detecting if the object is currently in the 'open' state? I've tried database.closePending and looking at other properties but do not see a simple property that tells me the state of the database. I am looking to do this synchronously. Doing something like attempting open a transaction on a database and checking if an exception occurs is not a reasonable solution for me. I don't want to maintain an extra variable