我面临着一个非常关键的问题 - 我正在使用Ionic平台开发我的应用程序。 我有一个我需要尽快提供的对象,所以我尽快尝试加载。 但是,我注意到当我第一次尝试加载它时 - 它加载的速度非常慢,相比于2秒后加载它。
以下是一个示例:http://codepen.io/anon/pen/eNQyPB
angular.module('ionicApp', ['ionic','firebase'])
.controller('MyCtrl', function($scope, $firebaseObject) {
var fb = new Firebase("https://docs-examples.firebaseio.com/web/saving-data/");
$scope.foo = foo;
foo();
function foo() {
console.time('Done loading')
ret = $firebaseObject(fb).$loaded(function() {
console.timeEnd('Done loading');
});
}
});
打开控制台并刷新页面 - 查看立即调用函数foo()
时加载所需的时间。
现在,删除对foo()
的调用,刷新它并单击将启动对foo()
的调用的HTML正文,查看对象加载速度与其他方式的比较。
我很乐意理解为什么它会这样,并找到解决方法。
谢谢 盖
答案 0 :(得分:1)
CodePen不是您的应用的页面加载测试的最佳位置。页面必须加载,然后加载沙箱iframe
。
此外,如果这是一个离子应用程序,整个资产集将下载到设备上。它将立即供用户使用。因此,您需要关注的唯一加载时间是数据加载。
在你的情况下,你正在做console.time()
,我每次都会回来300-400毫秒,这非常快。
答案 1 :(得分:0)
最有可能的是构建一个新的Firebase引用并在加载后返回它。您正在使用
创建新参考new Firebase("https://docs-examples.firebaseio.com/web/saving-data/");
该网址需要4.24才能加载我的连接。然后在你的foo()
函数中等待加载然后再执行另一种方法
ret = $firebaseObject(fb).$loaded(function() {
console.timeEnd('Done loading');
});
总的来说,你的codepen在我的连接上只需要超过5秒,因此总时间包括等待你的引用url加载以及其余的codepen页面。