我需要从我的网站获取PhoneGap中缓存图像和html文件的方法。我计划用户将看到没有互联网连接的网站,就像它将使用它一样。但是我只看到有关sql数据存储的信息,但是如何存储图像(以后再使用)。
答案 0 :(得分:24)
要缓存图像,请查看此库 - 我是其中的创建者 - : imgcache.js 。它的设计目的是使用本地文件系统缓存图像。如果您查看示例,您将看到它还可以检测到何时无法加载图像(因为您处于脱机状态或连接非常糟糕),然后使用缓存的图像自动替换它。 webapp的用户甚至没有注意到它处于离线状态。
对于html页面..如果它们是html静态文件,它们可以本地存储在Web应用程序中(file:// in phonegap)。 如果它们是动态生成的页面,如果您有少量数据,请检查localStorage API,否则检查文件系统API。
对于我的网络应用程序,我只从服务器检索json数据(并使用Backbone + Underscore处理/渲染它)。 json有效负载存储在localStorage中。如果应用程序脱机,它将从localStorage而不是服务器(Backbone.dualStorage的自制分支)获取json数据
然后,您将获得完整的离线体验:页面+图片。
答案 1 :(得分:9)
像您可能需要进行简单的离线操作一样缓存并不是那么容易。
您的第一个选项是cache manifest。它有一些限制(比如缓存的大小)但可能对你有用,因为它的设计是为了你想要的。
另一个选择是您可以使用文件系统API将内容存储在设备的磁盘上。这有一些缺点,例如安全性,以及您必须从路径/ URL加载文件的事实,该路径/ URL与您通常从Web上加载它的方式不同。查看hydra插件以获取此示例。
最后一个选项可能是将东西存储在localStorage中(它的好处是在所有平台上都是私有的),然后在需要时将其拉出来......这意味着将所有图像都放到底部,这样就可以了非常偏离标准缓存。
答案 2 :(得分:1)
在Android操作系统上可以进行缓存。但是如上所述,在Apple上,图像大小和缓存大小等方面存在限制。
如果您愿意在iOS上集成并允许缓存,则可以使用“缓存清单”来执行此操作。但要记住退缩和限制。 也 如果您要将文件保存到我的应用程序下的Documents文件夹,Apple将拒绝您的应用程序。原因是系统在iOS6之后将Documents文件夹下的所有数据备份到iCould,因此Apple不允许大型数据(如图像或JSON文件)再次从您的服务器同步以保留在此文件夹中。
所以还有另外一项工作是好的所以可以使用LocalFileSystem.TEMPORARY。它不会将数据保存到库/缓存中,但会将数据保存到App的临时文件夹中,该文件夹不会自动备份到iCloud,也不会自动删除。
此致 拉杰夫