我正面临一个非常关键的问题--我正在使用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主体,查看加载的对象与其他方式相比的速度。我很乐意理解它为什么会这样,并想办法绕过它。
谢谢你,伙计
发布于 2015-11-20 13:03:48
CodePen不是对应用程序进行页面加载测试的最佳位置。页面必须加载,然后加载沙箱化的iframe。
另外,如果这是一个Ionic应用程序,整个资产集将被下载到设备上。它将立即提供给用户。因此,您将关注的唯一加载时间是数据加载。
在你的例子中,你正在做一个console.time(),我每次回来大约300-400毫秒,这是相当快的。
发布于 2015-11-20 09:31:47
它最有可能的做法是构建一个新的Firebase引用,并在加载之后返回它。您正在创建新的引用
new Firebase("https://docs-examples.firebaseio.com/web/saving-data/");该url需要4.24s才能加载到我的连接上。然后在foo()函数中等待加载,然后执行另一个方法,如下所示
ret = $firebaseObject(fb).$loaded(function() {
console.timeEnd('Done loading');
});总的来说,您的代码依赖在我的连接上只需要超过5s,所以总时间包括等待您的引用url加载加上代码页的其余部分。
https://stackoverflow.com/questions/33822888
复制相似问题