【发布时间】:2012-03-16 13:32:32
【问题描述】:
我应该尽量减少模板包含吗?我一直在使用它们,但我想知道它们是否效率低下或在渲染模板中增加了一些开销?
在某些情况下,我的模板包含包含其他模板的模板。
【问题讨论】:
我应该尽量减少模板包含吗?我一直在使用它们,但我想知道它们是否效率低下或在渲染模板中增加了一些开销?
在某些情况下,我的模板包含包含其他模板的模板。
【问题讨论】:
特别是模板渲染时间通常比数据库时间短得多,所以通常你不需要在早期担心它;还有其他地区可以更有效地提高性能。
对于部署,您通常可以使用the cached loader 来提高模板包含的性能(您可能需要向下滚动一点)。然后它只加载一次模板,然后它可以使用编译的模板,而不需要从磁盘加载它。
为了解决模板渲染开销的问题,一旦你将它缓存起来,它就非常便宜。我根本不会担心。这样做可以最大限度地提高系统的可维护性。
如果我不提及(希望提醒您)关于性能优化的两条格言,我可能是不负责任的;它们是很常见的说法,如果您不熟悉它们,应该能够找到大量关于它们的信息。
【讨论】:
ab 时,有 7 个典型查询(一些连接,1 个 COUNT,没有聚合等)到 Postgres 和 20 个模板包含(使用缓存的加载器),并使用 0 个包含渲染相同的模板(包括相同的内联输出)在模板中,我从每秒 48 个请求到每秒 8 个请求 (ab -n 1000 -c 4 [url]) - 4 个工作人员在具有 8GB RAM、零 HD IO 的四核上使用 uWSGI,但数据库除外.
{% include %}的模板。