使用HTML5 Web数据库存储文件以供离线访问

12

我正在尝试为iPad创建一个简单的Web应用程序,需要在没有互联网连接的地方使用。该应用程序基本上是一个简单的“幻灯片演示”,但也包括一些视频文件(通常约100MB)。

最初,我计划使用HTML5的离线清单缓存,在互联网连接可用时将资产同步到iPad的内存中,然后再出发,但遗憾的是,至少在iOS 3.2中存在限制,即缓存总量不能超过5MB。

看着谷歌使用HTML5 Web数据库的方式,我想知道是否有一种替代解决方案可以将视频/图像资产投入到数据库中的Blob中。然而,我在找到一种方法将二进制数据读入以存储在数据库的Blob中方面遇到了很大困难。

我的问题是:

  1. 是否有人能提供[链接]读取二进制数据并将其写入客户端HTML5 Web数据库(并访问它)的示例?
  2. 在5MB限制方面,这是否是一个明智的替代实现方法?

你对这个问题有所进展吗?我正在研究一个类似的桌面问题。 - Keith Fitzgerald
很遗憾,我们不得不编写一个围绕嵌入式Safari实例的轻应用程序。该应用程序本身进行了初始内容请求,获取了清单并获取到内容,然后从磁盘本地呈现给浏览器实例。我们坚持解析与当前HTML5规范相同格式的清单,希望有一天我们可以摆脱应用程序,并只使用原始浏览器动力(R)(TM)!!1! - andybee
2个回答

5

我想分享一下我的经验,因为它可能与您相关。我们尝试开发了一个基于iPad的Web应用程序,需要存储数千个图像和文件(如演示文稿和Word文档)。

在Windows上模拟(Safari 4& 5),可以将编码为base64的图像导入到Web SQL数据库中(blob字段),并使用db回调显示它们,以设置图像标记的源,例如src="data:image/jpeg;base64,...base65encimagedata..."

其他文件(doc,ppt,pdf)必须使用离线缓存/清单上传。即使我们可以将它们作为base64放入数据库中,也没有办法查看它们。

现在的问题是...桌面版Safari允许您创建大型SQL数据库(我导入了3000张图片的1 GB)。并且还没有对离线缓存施加已知限制。

但是,在iPad上,情况就不那么有用了,因为我无法创建超过50 MB的数据库,再加上5 MB的缓存限制。

一些替代方案(我尚未尝试)包括:

  1. 在iPad上尝试Opera Mini(或其他可用浏览器)
  2. 我知道Google Chrome(使用webkit)对其SQL数据库大小有限制,但是您可以通过一些SQL“补丁”(https://groups.google.com/a/chromium.org/group/chromium-html5/browse_thread/thread/8672b2e0cd69a9f7/ebf17070d32c1168?lnk=gst&q=database+size#ebf17070d32c1168)来增加其大小。也许在iPad上也可以这样做。

总之,目前(至少)不可能。对于我的特定项目来说,看起来需要编写一个围绕UIWebView的轻量级应用程序,将内容拉到iPad文件系统中,然后显示它。 - andybee

2

数据库有5MB的限制,超过后用户将被提示允许增加约20MB。硬性限制是20-25MB,超过此限制您将无法再向本地存储中插入任何记录。


限制是平台和浏览器特定的,无论是对于webStorage还是WebSQL。 - Astronaut

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