【问题标题】:Performance including templates from inside for loop in Django性能,包括 Django 中 for 循环内部的模板
【发布时间】:2013-08-21 11:17:11
【问题描述】:

遵循 Don't Repeat Yourself 原则 (DRY),我重构了我正在使用的 Django 模板。

我在 for 循环中包含模板,而每个包含的模板又可以包含零个或多个模板。

我不知道这是否会是性能问题或Django自动缓存模板,一旦使用{% include %}包含一个,那么每次相同的模板(文件)都不需要访问HDD包括在内。

当您在 Python 上重新导入某些内容时,它并没有真正重新导入,而是在已经导入的模块中查找。所以,我想知道 Django 是否使用类似的方法。

【问题讨论】:

  • 我的建议很简单……如果您需要性能,请使用 Jinja2 而不是 Django 作为模板解析器。尽管 Django 模板解析器在过去几年中得到了显着改进,但与 Jinja2 相比仍然相当缓慢。
  • 另外,就 DRY 而言。使用 Jinja2,您可以使用使这些类型的模式非常简单和可重用的宏。它们就像您可以导入的模板中的 Python 函数。
  • 我会记住这一点的。我喜欢 Jinja2 的地方在于,您可以将参数传递给 Django 模板中的方法,而您不能:(
  • 与数据库访问相比,模板的加载速度通常更快。如果您要使用数据库中的信息填充模板,请先考虑数据库!

标签: django performance django-templates


【解决方案1】:

Django 有一个可选的cached template loader 可能会有所帮助。

但是,您应该分析您的应用程序以检查模板加载是否确实是一个瓶颈(我对此表示怀疑,与 db 访问等的开销相比)。

【讨论】:

  • 这似乎正是我所想的。但是,我正在使用几个 3rd 方应用程序,我不知道它们是否是线程安全的,如文档中所要求的那样:S 有没有办法知道模板渲染的实际成本?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 2012-07-25
  • 2012-01-24
  • 1970-01-01
  • 2018-03-08
  • 2010-11-09
相关资源
最近更新 更多