如何通过JavaScript压缩WebSQL数据库

5
我使用HTML5 + WebSQL开发了一个应用程序,该应用程序将本地数据库中的数据与服务器进行同步。
当删除数据时,sqlite数据库文件的大小保持不变。我知道这包含空白空间,并且在插入新数据时会被填充,但由于限制,我希望尽可能保持大小较小。
我知道sqlite中的VACUUM命令可以压缩数据库并删除未使用的空间,但是当我尝试从JavaScript运行它来清理WebSQL数据库时,它会失败并显示“逻辑错误或缺少数据库”的错误。在浏览器外部运行该命令正常工作。
我的问题是:
  1. 是否可以通过JavaScript执行VACUUM命令?

  2. 浏览器是否会自动实现此功能并最终调用它?(找不到任何文档)

感谢您的帮助。
1个回答

4
由于WebSQL已经被弃用/停止开发,因此错误/功能请求不会被修复,也永远不会得到支持。这个问题在Chromium中也存在,并且没有得到回应。
看起来你的两个问题都是真实存在的:
1:因为只有在未连接到数据库时才能运行vacuum命令,所以只能从命令行中运行它。似乎在浏览器或JavaScript中没有“断开数据库然后运行VACUUM”的命令。
2:不要指望它能正常运行。当它达到最大大小限制时,甚至可能无法运行,即使它能运行,在达到最大大小限制之前你也会注意到主要的减速。
最多,你可能可以发送一个命令给插件或者一些在javascript上下文之外的东西,让它自己运行这个命令......现在它已经被弃用了,所以这个问题已经没有意义了。对于传统应用程序,如果必须使用该函数,则必须在简单网页/js上下文之外完成。
现代应用程序现在使用IndexedDB; 这个问题只回答了传统应用程序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接