【问题标题】:Django template includes slow?Django模板包含慢?
【发布时间】:2012-03-16 13:32:32
【问题描述】:

我应该尽量减少模板包含吗?我一直在使用它们,但我想知道它们是否效率低下或在渲染模板中增加了一些开销?

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

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    特别是模板渲染时间通常比数据库时间短得多,所以通常你不需要在早期担心它;还有其他地区可以更有效地提高性能。

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

    为了解决模板渲染开销的问题,一旦你将它缓存起来,它就非常便宜。我根本不会担心。这样做可以最大限度地提高系统的可维护性。

    如果我不提及(希望提醒您)关于性能优化的两条格言,我可能是不负责任的;它们是很常见的说法,如果您不熟悉它们,应该能够找到大量关于它们的信息。

    1. 不要过早优化。
    2. 衡量——不要猜测。

    【讨论】:

    • 我已经使用 django 2 年了,从来没有读到过缓存加载器。谢谢你。唉,我只有一个赞成票。
    • @zsquare:我认为它当然没有得到应有的重视。我之所以找到它,是因为我正在做一个特定的非 Web 事情,我正在连续渲染几个模板大约五千次,并且知道 必须 有一种缓存它们的方法,人们 必须以前有过需要——即使那样我也没有立即在文档中找到它,而是通过错误跟踪器中的票找到它。
    • Django 的模板非常慢,而且数据库通常不是瓶颈,只是在某些情况下。这个原则简直就是教条。当我在一个页面上运行 ab 时,有 7 个典型查询(一些连接,1 个 COUNT,没有聚合等)到 Postgres 和 20 个模板包含(使用缓存的加载器),并使用 0 个包含渲染相同的模板(包括相同的内联输出)在模板中,我从每秒 48 个请求到每秒 8 个请求 (ab -n 1000 -c 4 [url]) - 4 个工作人员在具有 8GB RAM、零 HD IO 的四核上使用 uWSGI,但数据库除外.
    • 有趣(回复:单线程),谢谢。另外,我犯了一个错误;我在其中运行 Django 的 VirtualBox 只分配了 1GB 的 RAM。我坚持认为模板包含非常慢,并且在我开发过的大多数应用程序中它是一个非常常用的功能,但承认 20 个包含有点多。我的大多数模板只有 3-6 个包含。
    • @SaranshMohapatra:不。这里查询的只是模板,包括其他带有{% include %}的模板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 2013-04-26
    • 2010-11-27
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多