テンプレート変数増やしたら、DBアクセス数増えて遅くなった場合の対処 | MODxでハマるありがちな罠と解決法

テンプレート変数増やしたら、DBアクセス数増えて遅くなった場合の対処

まあ、表題の通りで。多かれ少なかれ、大抵のCMSではDBを使っているので、こうなります。

一番ありがちなのが、WayFinderやDittoのプレースホルダーテンプレートで、GetField等を使い、他ドキュメントのテンプレート変数を参照しにいった場合ですね。破格に重たくなります。
#ま、当然の事なんですが、初心者向けではないので、解説はしませんよ。

じゃあ、当方では、どうやって対処しているか。

簡単です。スニペット自作。

特に、他ドキュメントからテンプレート変数を取る場合、同一ドキュメントから複数の値を取ることが多いので、IDさえ判っていればgetDocumentVars等で、簡単に必要なテンプレート変数を「複数同時に」取得できます。

DittoのプレースホルダーテンプレートにGetFieldを10個仕込んでいたら、そりゃ、Dittoが20レコード引っ張ったら最低でもDBアクセスは200回になるです。はい。
実際は、物凄い数字になりますが。
でも、こうすれば、40回くらいで済むはず。これだけで負荷はかなり減ります。

MODxを好んで使っている方や、組み込んでいる方は、ほぼ「PHP」は判る方が多いと(勝手に)思ってますので、是非お試しを。

この件は、続編でサンプルコード出せたらと思います。
汎用的に作れそうなので、ドキュメントIDとプレースホルダーテンプレートを指定したら埋め込んだ内容を返す的な。
#既にあったらびっくり。

2010/02/09追記
作ってみましたのでこちらからどうぞ。
他ドキュメントを 何度も参照する場合のDB負荷軽減用スニペット


作成日
2010.02.03 (水)
最終更新日
2010.02.09 (火)
作成者
Takayuki Hirosawa
  • speed_fish 引っ越ししてからつなげていなかったとても古いnetgearのnas。今日つなげようとしたらlan経由で全くつながらず。windows10が勝手にsmb1を切り捨ててたと判明するまでに3時間。httpでもpingでもつながるのにos… https://t.co/Ejd7om16t0 2018-04-24 11:41:09
  • speed_fish modxからevoが切り離しかー。まあrevoとはもう別物感溢れてたし良いんじゃないでしょうか。やりやすくなるといいなー。 2017-04-28 20:33:09
  • speed_fish Chromeの57から頻発している、ERR_BLOCKED_BY_XSS_AUDITOR。試してみたけど、hidden含め入力項目にJavaScriptが入っても発生。HTTPS化していないフォームはまあ当然発生かな。 2017-04-10 18:00:57
  • speed_fish modxサイトをcloudflare化でeFormで引っかかる。中身みたらsite_urlでリファラーチェックしてました。ssl flexibleを使おうとしてたので、eFormを改造。パラメータにsiteurlを追加しましたとさ。#modx #cloudflare #eform 2017-03-04 00:44:09
  • speed_fish メモメモ。MODxでAMP対応するスニペット。 GETのURLが気に食わないのでリライトかな。 https://t.co/Oa9qzQ5dOr 2017-02-03 01:10:54