我应该尽量减少模板包含吗?我有点儿随意地使用它们,但我想知道它们是否在渲染模板时效率低下或增加了一些开销。
在某些情况下,我的模板会包含其他模板,这些模板又包含其他模板。
我应该尽量减少模板包含吗?我有点儿随意地使用它们,但我想知道它们是否在渲染模板时效率低下或增加了一些开销。
在某些情况下,我的模板会包含其他模板,这些模板又包含其他模板。
通常情况下,模板渲染时间比数据库时间要小得多,因此在早期阶段通常不需要过多担心它;还有其他地方可以更有效地提高性能。
对于部署,您通常可以通过使用缓存加载器(您可能需要向下滚动一点)来提高模板包含的性能。然后它只加载模板一次,之后可以使用已编译的模板,而不需要从磁盘加载它。
针对模板渲染开销的问题,一旦您将其缓存,就非常便宜了。我根本不用担心它。以最大化系统可维护性的方式操作。
如果我不提及(希望是提醒)两个关于性能优化的箴言,那么可能会让人觉得不负责任;它们是足够常见的说法,如果您不熟悉它们,应该能够找到大量的信息。
ab
时,其中包含了7个典型的查询(一些连接、1个COUNT
、没有聚合等),并且使用缓存加载器包含20个模板,然后将相同的模板渲染为包含相同输出的0个包含的模板时,我的请求从每秒48个降至每秒8个(使用ab -n 1000 -c 4 [url]
)- 在带有4个工作进程的uWSGI上,在四核8GB RAM的机器上,除了数据库外没有任何硬盘IO。 - orokusaki{% include %}
。 - Chris Morgan