WebSQL增加了浏览器支持。它的未来是什么?

时间:2017-02-17 02:56:25

标签: google-chrome-extension web-sql web-standards deprecation-warning

我已经做了一些环顾四周,发现WebSQL现在似乎有一些不稳定的未来。

一方面,它显然被广泛地视为一种解决方案,因为事实上每个实际的实现只使用SQLite3,因为规范本身大量借用了SQLite3的设计语义,而且对于<非常棘手em> not 专门使用SQLite3。

另一方面,截至2017年2月,所有主流浏览器似乎都支持它(http://caniuse.com/#search=websql) - Chrome已经使用了很长时间,它在IE11,Edge 14,Firefox 50中引入,移动支持似乎也呈现出积极的趋势(现在只有一个说明说它在某些三星上出于某种原因不起作用)。

IndexedDB背后的理论确实有意义:它是一个全新的标准,不依赖于任何现有的库,供应商可以设计自己的实现,创建竞争,并避免供应商/库锁定。但是,我已经陷入了IndexedDB最负面的一个方面:由于实现开销,它的抽象设计似乎具有绝对灾难性的性能。

http://scaljeri.github.io/indexeddb-vs-websql/v2.0.0/index.html是一键式IndexedDB-vs-WebSQL枪战。我把它设置为10000个项目(一个相当适中的数字)并尝试使用我的ThinkPad T43--一个2GB内存的单核2GHz Pentium M。

首先,除了Chromium之外什么都没有运行,大多数标签都被暂停,剩下的标签没有使用任何CPU:

enter image description here

对于IndexedDB上的整个“插入”时间,该选项卡使用100%CPU,系统通常无法使用。 (我本可以浏览一下 - 屏幕重绘真的很慢 - 但我不是为了获得准确的基准测试。)

当我有很多其他事情发生时,我也碰巧使用了标签,系统碰巧被交换死亡(在这台特定的机器上发生了很多事情):

enter image description here

然而,在整个过程中,WebSQL的性能令人难以置信。插入一堆行的三秒钟,即使在系统交换很多(到慢速HDD)时,系统I / O也会受到很大影响。 (注意:我了解SQLite3强制刷新所有数据到磁盘以确保默认完整性,但我不确定Chrome的实现是否会禁用WebSQL的此选项。)

https://nolanlawson.com/2015/09/29/indexeddb-websql-localstorage-what-blocks-the-dom/(自2015年9月起)完成的基准测试似乎与我在此提出的内容基本一致;它表明,在2013 Macbook Air上,IndexedDB的性能要比WebSQL差得多。

考虑到这些因素,我有两个问题。

  1. 什么是WebSQL的实际未来作为Web标准? SQLite3无处不在(它是ANSI C),WebSQL似乎得到广泛支持(?)。

    我的问题最初是专门询问有关Chrome扩展支持的内容(请参阅下一点),但现在我想一想,如果我想要替代localStorage(及其5MB限制),我会想要使用WebSQL作为我的主要解决方案,使用IndexedDB或localStorage作为很少(如果曾经)使用的后备。我今后采用这种方法取得成功的机会是什么?

  2. 是否有任何浏览器供应商可能很快就会放弃WebSQL支持(针对网站和/或扩展程序)?

    我正处于Chrome扩展程序的设计阶段,需要存储大量可能的信息 - 它将管理历史记录/书签/等,这些数据只会增长而且不会缩小。我打算在我的所有计算机上使用这个扩展,包括我在上面显示的基准测试中的T43。

    此时,对我来说,它是WebSQL还是什么都没有;我不同意IndexedDB。如果WebSQL看起来它会消失,我将在Go或类似的地方制作一个小型应用程序服务器并简单地与之交谈。

    在类似的说明中,如果WebSQL有一天随机“离开”Chrome,即使Web支持消失,对它的扩展支持是否会继续?

0 个答案:

没有答案