我是AngularJS中的新成员。我开发了一个列表,可以在搜索框中输入时进行过滤。过滤器会从数据库对象中获取许多字段并搜索所有这些字段(如:name,id,comments ...等)。 当我加载所有queryset并使用(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 分页不符合网站的要求。这就是为什么我不能使用它。 过滤过程应该一次完成整个数据。 –