Django模板包含慢?

9-b*_*its 15 django django-templates

我应该尝试最小化模板包含吗?我一直在使用它们,但我想知道它们是否效率低或者在渲染模板时增加了一些开销?

在某些情况下,我的模板包含其他模板的模板.

Chr*_*gan 25

模板渲染时间通常比数据库时间小得多,因此通常您不必在早期就担心它; 还有其他地区可以更有效地提高绩效.

对于部署,通常可以通过使用缓存的加载程序来提高模板包含的性能(您可能需要向下滚动一点).然后它只加载模板一次,然后它可以使用编译的模板而不需要从磁盘加载它.

为了解决模板渲染开销的问题,一旦你将其缓存,它就相当便宜了.我根本不担心.这样做是为了最大限度地提高系统的可维护性.

如果不提及(希望提醒你)两个性能优化的谚语,我可能是不负责任的.如果你不熟悉它们,你应该能够找到关于它们的大量信息.

  1. 不要过早优化.
  2. 措施 - 不要猜.

  • Django的模板非常慢,而且在某些情况下,数据库通常不是瓶颈.这个原则只是一个教条.当我在一个页面上运行`ab`时,有7个典型的查询(一些连接,1`COUNT`,没有聚合等)到Postgres和20个模板包括(使用缓存的加载器),并渲染相同的模板,包括0 (在模板中包含相同的输出内联),我从每秒48个请求变为每秒8个请求(`ab -n 1000 -c 4 [url]`) - 4个核心上带有8GB内存的uWSGI工作者,零HD IO,数据库除外. (11认同)
  • @zsquare:肯定没有我认为应得的突出地位.我只是发现它,因为我正在做一个特殊的非网络事物,我连续渲染几个模板大约五千次,并且知道*必须*是一种缓存它们的方式,人们*必须*有需要之前---甚至那时我没有立即在文档中找到它,而是通过bug跟踪器中的票证找到它. (2认同)
  • @SaranshMohapatra:没有.这里要查询的只是模板,包括带有`{%include%}`的其他模板. (2认同)