Я новичок в AngularJS. Я разработал список, который можно отфильтровать при вводе в поле поиска. фильтр принимает много полей из объекта базы данных и выполняет поиск по всем этим полям (например, имя, идентификатор, комментарии ... и т. д.). Проблема возникает, когда я загружаю весь запрос и заполняю список в угловом методе с помощью команды (push). , так как у меня есть большое количество записей в базе данных, загрузка страницы занимает около 12 секунд, и база данных растет, поэтому на этот раз это будет расти! Я тестировал производительность с использованием временной линии и, как и ожидалось, сценарии занимают очень много времени!Улучшение производительности
Вот часть моего кода:
Шаблон
<script type="text/javascript">
ngApp.controller('FilterCtrl', function ($scope) {
$scope.lines = [];
{% for line in lines %}
$scope.lines.push
({
id:{{ line.id }},
name: '{{ line.name }}',
alias: '{{ line.alias }}',
owners: '{{ line.print_owners }}',
interested_in: '{{ line.print_interested_in }}',
crosses_count: '{{ line.related_crosses_count }}',
area: '{{ line.expressions }}',
});
{% endfor %}
});
</script>
просмотров:
def browse_lines(request):
lines = Line.objects.filter(deleted=False).order_by('name')
return render_to_response('Browse_Lines.html',
{'lines': lines },
context_instance=RequestContext(request))
Любой способ повысить производительность и ускорить заполнение списка? спасибо.
Вы считали какую-то разбивку на страницы (т. Е. Только возвращали первые записи 'x')? – jonrsharpe
В конце базы данных очевидное улучшение добавляет индексы для полей, которые вы используете для такого запроса. – Nikita
@jonrsharpe Pagination не соответствует требованиям веб-сайта. Вот почему я не могу его использовать. Процесс фильтрации должен проходить через полные данные за один раз. –