【发布时间】:2012-02-29 06:16:54
【问题描述】:
比如说,我有一个带有照片库的页面。每个缩略图都有例如照片、国家、作者等。我使用模板标签(加载指定的模板)呈现这些项目/小部件 - 因为 DRY(我在页面上的不同位置分别使用这些项目/小部件),所以会这样。
而且速度很慢。
我使用 django-debug-toolbar 进行了一些分析:
SQL Queries: default 84.81 ms (147 queries)
但是:
Total CPU time: 5768.360 msec
等待的时间太长了。
经过一番分析,原来罪魁祸首是模板引擎。
当我想显示时正在通过模板呈现 150 张照片、600 个相关项目/小部件。这意味着 600 次 I/O 操作甚至更多。将这些小部件移动到主模板可以解决问题,但不会保持 DRY。
所以我的问题是如何避免这种行为?干燥且缓慢或不干燥且快速? 我宁愿干而且快...
【问题讨论】:
-
能否提供templatetag代码?
-
花在查询上的时间相对来说很少。但是 ORM 需要更多时间来生成这些查询并将结果解析为模型实例
标签: django optimization django-templates