使用最新的Meteor版本0.5.9我一直在尝试使用appcache包,并且非常喜欢它的功能。
我使用meteor create --example leaderboard
然后使用meteor add appcache
来测试行为,当服务器根本没有运行时,页面甚至会加载!超级酷!
但是,数据库似乎没有被缓存?服务器未运行时
Players.find().fetch()
返回
[]
这对我来说是一个非常明显的障碍,因为我正在创建一个笔记应用程序,其中笔记也需要离线使用。我是否遗漏了某些内容,或者是否有其他方法可以在离线时获取数据库数据?
答案 0 :(得分:2)
查看Ground:DB Package以供此用途。该软件包使客户端缓存订阅集合。
https://atmospherejs.com/ground/db
将由Meteor订阅填充的集合示例(需单独订阅)
localCollection = new Ground.Collection('mongoName');
断开连接的示例(因此您必须自己填充)
disconnectedCollection = new Ground.Collection('localName', {connection:null} );
答案 1 :(得分:1)
appcache包不会缓存您的数据。见the docs:
appcache包将Meteor应用程序的静态部分(客户端Javascript,HTML,CSS和图像)存储在浏览器的应用程序缓存中。
[...]
(但请注意,appcache包本身不会使数据脱机:在离线加载的应用程序中,Meteor Collection在客户端中显示为空,直到Internet可用并且浏览器能够建立livingata连接)。
此时,appcache包纯粹是为了通过缓存静态资源来提高应用的加载速度。请参阅meteor wiki:
appcache包仅用于缓存静态资源。作为“应用程序”缓存,它缓存应用程序所需的资源,包括HTML,CSS,Javascript和在public /目录中发布的文件。