遵循不重複自己原則(DRY),我重構了我正在使用的Django模板。包含Django循環中模板的性能
我包含來自for循環內部的模板,並且每個包含模板的模板都可以包含零個或多個模板。
我不知道這是一個性能問題還是Django自動緩存模板,一旦使用{% include %}
包含了一個模板,那麼每次包含相同的模板(文件)時就不需要訪問HDD 。
當您在Python上重新導入某些內容時,它不會再次重新導入,而是會在已導入的模塊中查找。所以,我想知道Django是否使用了類似的方法。
遵循不重複自己原則(DRY),我重構了我正在使用的Django模板。包含Django循環中模板的性能
我包含來自for循環內部的模板,並且每個包含模板的模板都可以包含零個或多個模板。
我不知道這是一個性能問題還是Django自動緩存模板,一旦使用{% include %}
包含了一個模板,那麼每次包含相同的模板(文件)時就不需要訪問HDD 。
當您在Python上重新導入某些內容時,它不會再次重新導入,而是會在已導入的模塊中查找。所以,我想知道Django是否使用了類似的方法。
Django有一個可選的cached template loader可能有幫助。
然而,你應該分析你的應用程序來檢查模板加載是否真的是一個瓶頸(我懷疑它與db訪問等開銷相比)。
這似乎正是我想到的,但是,我正在使用多個第三方應用程序,並且我不知道它們是否是線程安全的,如文檔中所要求的那樣:S是否存在如何知道模板渲染的實際成本? – Caumons
我的提示很簡單......如果您需要性能,請使用Jinja2而不是Django作爲您的模板解析器。儘管Django模板解析器在過去幾年中有了很大的改進,但與Jinja2相比,它仍然相當緩慢。 – Wolph
另外,就DRY而言。使用Jinja2,您可以使用宏,這使得這些類型的模式非常簡單且可重用。它們就像您可以導入的模板中的Python函數。 – Wolph
我會牢記這一點。我喜歡Jinja2的是,你可以將參數傳遞給Django模板中的方法,你不能:( – Caumons