我希望能够将一个SQLite数据库指定为清单文件的CACHE部分中的资源。这将允许页面上的脚本在脱机模式下使用数据库。
我在HTML5规范中找不到任何说明无法做到这一点的内容,但我也没有取得任何成功。
有可能吗?
答案 0 :(得分:1)
查看W3C脱机Web应用程序规范(http://www.w3.org/TR/html5/offline.html),似乎没有办法在清单中包含SQLite数据库文件。否则看起来几乎所有具有相对于网站根的已知路径的东西。数据库文件由浏览器在特定于网站的单独目录中创建,并且不同浏览器的路径不同。我的解决方案是在第一次调用应用程序时创建和下载数据库 - 能够下载文件会好得多,但我没有办法做到这一点。
答案 1 :(得分:1)
我玩了一会儿。这是我发现的:
(Web工具包)浏览器使用数据库来组织Web SQL数据库。 : - )
对于Chrome,它位于(Mac OS X):
~/Library/Application Support/Google/Chrome/Default/databases/Databases.db
您可以通过SQLite3 Databases.db
:
我看起来像:
sqlite> select * from databases;
1|http_slides.html5rocks.com_0|DBTest|HTML5 Database API example|200000
2|http_www.html5rocks.com_0|modernizrtestdb|modernizrtestdb|20000
3|http_www.html5rocks.com_0|Todo|Todo manager|5242880
4|http_experimenting.in_0|mystorage|Web SQL Storage Demo Database|1048576
5|file__0|mystorage|Web SQL Storage Demo Database|1048576
sqlite> .quit
文件./file__0/5
包含mystorage
的数据库。
当代码执行opendatabase时会创建条目。
我没有找到如何在此数据库中创建条目并为其指定路径或文件名的方法。
答案 2 :(得分:1)
这是不可能的。
相反,将数据库转换为JSON对象并将其写入文件。在清单中包含该文件。在另一端,读取JSON对象并创建数据库。
效果很好!
答案 3 :(得分:0)
我还找到了一个免费的工具,它说它解决了这个问题 - 没有时间尝试它,但听起来它应该做的工作: http://impel.simulacre.org/blog/incrementally_synchronize_html5_databases_transparently.html