为什么angularjs代码慢?

时间:2014-01-06 15:49:50

标签: angularjs

是否正常,angularjs ng-repeat需要1.5秒才能从rest api渲染数据?结果只包含10行,总共1KB的数据。如何提高速度或在哪里寻找问题?

添加信息:

如果我直接在浏览器上运行,其余请求本身只需要128毫秒。

这是您从其余api获得的一组示例数据:

{
    "result": [
        {
            "id": 1224,
            "name": "Schokolade-Vanille",
            "kcal": 35500,
            "displayName": "Schokolade-Vanille"
        },
        {
            "id": 23423,
            "name": "Naturreis Uncle Bens",
            "kcal": 34400,
            "displayName": "Naturreis Uncle Bens"
        },
        {
            "id": 123231,
            "name": "Paprikahendl",
            "kcal": 4100,
            "displayName": "Paprikahendl"
        },
        {
            "id": 434,
            "name": "Vanille Kugeln",
            "kcal": 53700,
            "displayName": "Vanille Kugeln"
        },
        {
            "id": 323423,
            "name": "Weihnachtstraum, Lindor-Kugeln",
            "kcal": 60800,
            "displayName": "Lindor-Kugeln"
        },
        {
            "id": 5435,
            "name": "Schokolade",
            "kcal": 4300,
            "displayName": "Schokolade"
        },
        {
            "id": 23213,
            "name": "Hühner-Nuggets",
            "kcal": 23400,
            "displayName": "Hühner-Nuggets"
        },
        {
            "id": 5534,
            "name": "Knödel, Kartoffel",
            "kcal": 1230,
            "displayName": "Knödel, Kartoffel"
        },
        {
            "id": 23233,
            "name": "Curvers",
            "kcal": 15400,
            "displayName": "Curvers"
        },
        {
            "id": 53434,
            "name": "Frites Original",
            "kcal": 14100,
            "displayName": "Frites Original"
        }
    ],
    "count": 12854
}

新添加的信息

我现在仔细观察并发现,不是重复的问题就是问题。

我使用了以下代码:

$scope.updateResultset = function() {
    $scope.result = Food.query({
        offset: $scope.offset,
        order_by: $scope.orderby,
        name: $scope.textfilter,
    },function(){
        console.log( "response " + (new Date().getTime() - start) );
    });
    $scope.offset = undefined;

    console.log( "updateResultset " + (new Date().getTime() - start) );start = new Date().getTime();

得到以下回复: 回应435

但请求本身只需要131毫秒。在我看来,> 300毫秒是浪费在一个方法上的大量时间?

与我以前的版本相比,我展示了一个计划html列表,它被jquery ajax响应html取代,它的速度要慢得多吗?

2 个答案:

答案 0 :(得分:0)

正如其他人在评论中指出的那样,除了ng-repeat之外,代码中的原因可能是其他原因。但是,如果速度仍然是ng-repeat的一个问题,还有其他选择:

答案 1 :(得分:0)

好的,我发现了问题。不是重复10个列表项是问题!正如您在我的问题中所看到的,我不仅返回了10个结果,还返回了结果总数。就我而言,它是“计数”:12854'。

在同一页面上,我有一个分页,这是减慢整个页面的部分,因为它必须渲染1286个寻呼机按钮(~12854 / 10)。现在我只显示10个寻呼机按钮。