まあ、表題の通りで。多かれ少なかれ、大抵のCMSではDBを使っているので、こうなります。
一番ありがちなのが、WayFinderやDittoのプレースホルダーテンプレートで、GetField等を使い、他ドキュメントのテンプレート変数を参照しにいった場合ですね。破格に重たくなります。
#ま、当然の事なんですが、初心者向けではないので、解説はしませんよ。
じゃあ、当方では、どうやって対処しているか。
簡単です。スニペット自作。
特に、他ドキュメントからテンプレート変数を取る場合、同一ドキュメントから複数の値を取ることが多いので、IDさえ判っていればgetDocumentVars等で、簡単に必要なテンプレート変数を「複数同時に」取得できます。
DittoのプレースホルダーテンプレートにGetFieldを10個仕込んでいたら、そりゃ、Dittoが20レコード引っ張ったら最低でもDBアクセスは200回になるです。はい。
実際は、物凄い数字になりますが。
でも、こうすれば、40回くらいで済むはず。これだけで負荷はかなり減ります。
MODxを好んで使っている方や、組み込んでいる方は、ほぼ「PHP」は判る方が多いと(勝手に)思ってますので、是非お試しを。
この件は、続編でサンプルコード出せたらと思います。
汎用的に作れそうなので、ドキュメントIDとプレースホルダーテンプレートを指定したら埋め込んだ内容を返す的な。
#既にあったらびっくり。
2010/02/09追記
作ってみましたのでこちらからどうぞ。
他ドキュメントを
何度も参照する場合のDB負荷軽減用スニペット