angularjs - 提高绩效

标签 angularjs django

我是 AngularJS 的新手。我开发了一个列表,可以在搜索框中输入内容时进行过滤。过滤器从数据库对象中获取许多字段并搜索所有这些字段(例如:名称、id、评论...等)。 当我加载所有查询集并使用 (push) 命令填充 Angular 方法中的列表时,就会出现问题。 由于我的数据库中有大量记录,加载页面大约需要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))

有什么方法可以提高性能并加快填充列表的速度吗? 非常感谢。

最佳答案

快速获胜的方法是停止将事物一一插入数组

$scope.lines = [
{% for line in lines %}
   {
        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 %}    
];

</EndUglyCode>

现在正确的方法是发出一个单独的 get 请求来根据需要获取数据(在 Angular 主页上有很多 Angular 示例)。

分页肯定是一个好主意,但至少你可以拼接初始结果,这样你就不会一直返回 N 个对象

 lines = Line.objects.filter(deleted=False).order_by('name')[:10]

如果您确实觉得需要返回所有行,那么您应该考虑是否需要对它们进行排序,因为这可能会占用大量时间。

关于angularjs - 提高绩效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35847841/

相关文章:

python - 在启动时获取 "str"在 Django 应用程序上没有属性 "_default_manager"

python3 管理.py runserver

angularjs - 当插入指令属性时,如何避免启动时的竞争条件?

javascript - 即使用户已登录,环回也会抛出 accessToken undefined

javascript - 如何以 Angular 加载基本 html View 中的 View ?

javascript - 无法在 JS 而不是 HTML 中初始化 ng-model

python - Django BooleanField 接受非 bool 类型对象

html - 提供的 og :image URL, [AWS S3 的 url] 无法作为图像处理,因为它具有无效的内容类型

django - 原子事务不起作用 django rest

AngularJs - 观察对象新添加的子属性的最有效方法是什么?