我目前正在使用meteor上的内置cordova命令在应用程序中构建移动检查,但我无法弄清楚为什么加载某个模板需要1到2秒才能加载。
我的布局有一个固定的标题,底部有一个标签栏,有4个可以使用的图标(类似于Instagram的标签栏)。其他一切都是通过收益来实现的。
问题是当我从其他任何地方点击主页选项卡时,具有帖子集合列表的主主页逐渐开始加载更长时间。我实现了无限滚动,因此当用户点击主页时,最多显示10个帖子集合。如果主页有10个帖子而不是0,那么产量渲染速度要慢得多。有没有办法解决这个问题?
我目前正在使用铁路由器,只发布用户拥有的帖子和朋友的帖子。我不认为这是一个pub子问题,因为即使我在用户订阅的数据库中有100个帖子,如果我限制无限滚动在开头只显示5个帖子,那么主页会更快
这可能是客户端问题吗?我正在谷歌搜索尽可能多的解决方案,但人们正在谈论显示2000文档等的慢渲染速度。我只是在谈论5或10个文档。
编辑(感谢用户ghybs):
通过使用“限制”会话变量实现无限滚动,该变量跟踪应显示的文档数量。它从10开始,并以10递增。我正在使用blaze通过使用{{posts}}循环遍历所有订阅的Post文档,并将帖子作为模板助手返回posts.find({},{limit: limitvar})limitvar是从10开始的会话变量。我还必须提到会话变量是全局变量,这样当用户返回主页面选项卡时,所有加载的帖子仍然存在并且在重新启动应用程序或刷新页面之前不会重置为10(但是,自从使用cordova移动应用程序以来难以刷新页面)。
无论用户订阅了多少文档,显示10个文档与只订阅了10个文档的人具有完全相同的渲染时间。我也在用Kadira跟踪我的表现,没有任何异常(一切都在150ms以下)。
通过“长时间加载”解释我的意思:当用户点击页面底部标签栏上的主页按钮时,应用程序只会冻结一两秒,然后将用户定向到主页。如果有一些帖子(或没有帖子),则冻结时间较短(0文档时不明显)。我在router.js中设置了一个加载模板。如果这是与pub / sub或服务器相关的任何内容,它将显示一个指示页面正在加载的微调器。
目前,我正在努力通过在js客户端文件中删除尽可能多的mongodb“find”方法,一点一点地改变事物,使页面加载速度更快。不确定这是否是处理事情的最佳方式。我也在考虑从ironrouter转移到flowrouter,虽然我仍然不确定这是否能确定主页的加载时间,因为这些只是路由器。