Django - 使用 templatetags 渲染许多模板非常慢

2024-02-24

假设,我有一个带有照片库的页面。每个缩略图都有例如照片、国家/地区、作者等。我使用模板标签(加载指定的模板)渲染这些项目/小部件 - 由于 DRY(我在页面上的不同位置单独使用这些项目/小部件),所以会这样。

而且速度非常慢。

我使用 django-debug-toolbar 执行了一些分析:

SQL Queries: default 84.81 ms (147 queries)

But:

Total CPU time: 5768.360 msec

等待的时间太长了。

经过一番分析,发现罪魁祸首是模板引擎。

当我想显示例如150 张照片、600 个相关项目/小部件正在通过模板呈现。这意味着 600 次 I/O 操作甚至更多。将这些小部件移动到主模板可以解决问题,但不能保持 DRY。

所以我的问题是如何避免这种行为?是干且慢还是不干且快? 我宁愿干又快......


经过几个小时的分析和搜索......

感谢您的帮助,但在这种情况下,在我看来,迄今为止最好的解决方案是使用模板片段缓存 https://docs.djangoproject.com/en/dev/topics/cache/#template-fragment-caching:

我尝试了一下,速度提升了70-80%!

{% load cache %}
{% cache 3600 mywidget_id %}
    .. rendered mywidget is cached ..
{% endcache %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django - 使用 templatetags 渲染许多模板非常慢 的相关文章

随机推荐