2013-05-08 2 views
0

Я построил отзывчивую демонстрацию форума, которая отобразила список тем на мобильном устройстве. Он был невосприимчив, когда коллекция была обновлена. Я думаю, что причиной этого является медленный запрос.Производительность запроса в minimongo

Мой тест HTML:

<template name="index"> 
    <h1 id="myTime"></h1> 
    {{#each foo}} 
    <h1>{{name}}</h1> 
    {{/each}} 
    <input id="t" type="text"></input> 
    <button id="s">submit</button> 
</template> 

и JS:

Template.index.foo = function() { 
    return Foo.find({}).fetch(); 
}; 

Template.index.events({ 
    "click #s": function() { 
    Foo.insert({name: $("#t").val()}); 
    } 
}); 

Meteor.startup(function() { 
    Meteor.setInterval(function() { 
    $("#myTime").text((new Date()).getTime()); 
    }, 1); 
}); 

когда количество документов очень мало, код работает очень быстро. когда количество документов превышает 300, рендеринг остановится примерно на 3 с

Можно ли улучшить его? :)

ответ

0

Вы делаете вставки DOM на каждой итерации цикла? Легче создать document fragment, добавить все к этому, а затем добавить фрагмент в DOM в конце цикла. Логика остается практически такой же, но браузер должен перерисовать страницу только один раз в конце, в отличие от каждой итерации.

+0

спасибо! У меня нет кода операции DOM. Все операции DOM обрабатываются с помощью шаблона. И задержка перед «Template.index.rendered» (я добавил «предупреждение» в визуализированную функцию, и она была предупреждена после задержки) – QingYun

Смежные вопросы