2012-02-27 8 views
15

テンプレートのインクルードを最小限に抑える必要がありますか?私は幾分自由に使ってきましたが、効率が悪いのか、テンプレートをレンダリングする際にオーバーヘッドを追加するのだろうと思いますか?Djangoテンプレートには低速が含まれていますか?

場合によっては、他のテンプレートを含むテンプレートを含むテンプレートがあります。

答えて

25

通常、テンプレートのレンダリング時間はデータベースの時間よりもはるかに短いため、通常は早い段階で心配する必要はありません。パフォーマンスをより効果的に高めることができる他の地域もあります。

デプロイメントの場合、通常はthe cached loader(少しスクロールダウンする必要がある場合があります)を使用してテンプレートインクルードのパフォーマンスを向上させることができます。その後、テンプレートを一度ロードするだけで、ディスクからロードする必要はなく、コンパイルされたテンプレートを使用できます。

テンプレートレンダリングオーバーヘッドの問題に対処するために、一度キャッシュするとかなり安いです。私はそれについて全く心配しません。あなたのシステムの保守性を最大限にするようなやり方でそれを行います。

パフォーマンスの最適化という2つの言葉は言及していません(無意識のうちに思い出させてください)。彼らはあなたがそれらに精通していない場合、あなたはそれらの多くの情報を見つけることができるはずの共通の十分な言葉です。

  1. 時期尚早に最適化しないでください。
  2. 数値—は推測できません。
+1

私はdjangoを2年間使用していましたが、キャッシュされたローダについては読めませんでした。ありがとうございました。悲しいかな、私に与えるアップヴォートは1つしかありません。 – zsquare

+2

@zsquare:確かに私はそれが価値があると思う顕著さを与えられていません。私はそれが見つかったのは、Web以外のものをいくつか繰り返して、何千ものテンプレートを連続してレンダリングしていて、それらをキャッシュする方法でなければならないことを知っていたからです。以前は---でも、ドキュメントですぐに見つからなかったのですが、バグトラッカーのチケットで見つけました。 –

+11

Djangoのテンプレートは非常に遅いですが、たぶん場合によってはデータベースが通常ボトルネックであるということは当てはまりません。その原則は単なる教義です。私がPostgresに7つの典型的なクエリ(いくつかの結合、1つの 'COUNT'、集約など)を持つページで' ab'を実行すると、(キャッシュされたローダーを使用して)20のテンプレートがインクルードし、 ( 'ab -n 1000 -c 4 [url]') - 8GBのRAMを搭載したクアッドコアにuWSGIを搭載した4人の作業者、ゼロHD IO、データベースを除いて。 – orokusaki

関連する問題