-
- 324 Posts
リリースされたevolution1.0J (rc1) を実際に使ってみると、本家および日本で様々な変更が加えられていることが分かります。
modxの開発サイトで仕様的な議論が展開されてますが、項目は大小様々、技術的な用語も多く、ソースを読めないとその効果が理解できないことも多いと思います。ここでは、evolutionの変更点について、極力平易な表現で、推論を交えながら評価してみたいと思います。今回は個人的に興味のある性能面について2つほどリポートしてみます。evoでは性能以外にも、日本語環境における不具合の修正、利便性、可読性、操作性といった様々な切り口で改良が施されてます。皆さんと情報共有できれば幸いです。
***********************
■ 【性能】 管理画面の操作が全般的に軽く(速く)なった
***********************
DBのアクセス回数が大幅に削減され管理画面の操作が全般的に軽く(速く)なったようです。
以下は本件の発案者(Soushiさん)からお聞きした内容の一部で、若干手を加えてます。
-----------------------------------------
1.変更のあらまし
-----------------------------------------
キャッシュクリアにおけるドキュメントURLの生成処理を変えました。
[求めるURLの例]
/sub1/sub2/index.html
(3) (8) (10) ※数字はドキュメントID
★改善前★
[動き(処理)]
1.(10)の親ドキュメントのエイリアス名を取得
2.(8)の親ドキュメントのエイリアス名を取得
3.(3)の親ドキュメントのエイリアス名を取得
[問題点]
ドキュメント数分SQL文が発行される
★改善後★
[動き(処理)]
1.すべてのドキュメントのエイリアス名を一発で取得して配列化
2.配列から(10)(8)(3)のエイリアス名を取得
[改良点]
ドキュメント数に関係なく単発のSQL文で処理
-----------------------------------------
2.なぜこうしたのか、どのような事例で効果を発揮するのか
-----------------------------------------
1つのSQL文で抽出する情報量は大きくなりますが、SQL文の発行回数が削減されるため、ドキュメントの階層が多ければ多いほど効果は高くなります。特に、WebとDBが別サーバで通信処理にかかる時間がバカにならない環境では効果が倍増します。私の環境ではこちらが問題になってました。以下の例ですと。。。
[求めるURL]
/sub1/sub2/index.html
/sub1/sub2/sub3/index.html
/sub1/sub2/sub3/index2.html
/sub1/sub2/sub3/index3.html
/sub1/sub2/sub3/index4.html
/sub1/sub2/sub3/sub4/index.html
/sub1/sub2/sub3/sub4/index2.html
/sub1/sub2/sub3/sub4/index3.html
[SQL実行数]
旧方式=34回 : 新方式=1回
-----------------------------------------
3.効果が見えるのはこんなとき、こんな操作
-----------------------------------------
modxは、管理画面での設定変更やフロント画面でのドキュメント編集など、管理画面の内外を問わず”実行(データベースへの書き込み)”タイミングでキャッシュがクリアされます。従って、サイトの管理業務全般に渡る作業時間が短くなります。
***********************
■ 【性能】ドキュメントを開くのが速くなった
***********************
-----------------------------------------
1.変更のあらまし
-----------------------------------------
以前は、ドキュメントの編集を始める時点でドキュンメントが生成(キャッシュ)されてましたが、プレビュータブを開いた時点でドキュンメントが生成(キャッシュ)されるようになったようです。
-----------------------------------------
2.なぜこうしたのか、どのような事例で効果を発揮するのか
-----------------------------------------
実運用では、ドキュメントの編集を繰り返すことが多く、プレビューを使わなかったり、使うとしても編集した後の目視確認が主になります。プレビューで実際にページを見るまではページを作る必要はなく、ページの生成を先送りすることで、ドキュメントの編集を始めるまでの待ち時間が短くなります。ドキュメントの生成時間はプラグインの数や種類、ページ内のスニペットの数や処理内容で変わりますが、ページ内のリンクの数が多い比較的規模の大きなサイトほど効果が顕著になりそうです。
-----------------------------------------
3.効果が見えるのはこんなとき、こんな操作
-----------------------------------------
ドキュメントの編集を開始するとき
皆さんもよかったら気付いたことを書き込んでみてください。
投稿画面に採用されているTinyMCE3が今年になって抜本的な改良があって、軽量化が進んでます。Evoではこの軽量化されたTinyMCEを採用していて、TinyMCE2が搭載されていた0.9.6.1あたりからと比べると、全く別物くらいに軽くなっています。
MODx的には・・今までは翻訳漏れ対策のために英語ファイルを同時に読み込んでましたが、日本語版ではこれを廃止しました。管理画面の言語ファイルは1000以上ものエントリーがあるので、少し軽くなってると思います。