catalogViewスニペットを
紹介します。 Shopkeeper-1.0(MODx Evolution用)の新しいバージョン用に作成されましたが、
Dittoの代わりに使用できるようになりました。
両方のスニペットの小規模なパフォーマンステストを実施しました。 200のドキュメントがあります。 スニペットはキャッシュできないため、 ページングが必要です。 数回のページ更新後に、ほぼ平均値が取られました。
スニペット呼び出し:
[!catalogView?
&dataType=`documents`
&tpl=`@FILE:assets/snippets/catalogView/chunks/catalogRow_chunk.tpl`
&parents=`87`
&paginate=`1`
&display=`10`
&sortBy=`pagetitle`
&sortDir=`asc`!]
[!Ditto?
&tpl=`@FILE:assets/snippets/catalogView/chunks/catalogRow_chunk.tpl`
&parents=`87`
&paginate=`1`
&display=`10`
&sortBy=`pagetitle`
&sortDir=`asc`!]
1ページあたり10ドキュメント
catalogViewMySQL:0.0722秒、6要求(秒)、PHP:0.2756秒、合計:0.3479秒、キャッシュから取得したドキュメント
同上MySQL:0.1907秒、32リクエスト(s)、PHP:0.4672秒、合計:0.6579秒、キャッシュから取得したドキュメント
1ページあたり20ドキュメント
catalogViewMySQL:0.0735秒、6要求(s)、PHP:0.2934秒、合計:0.3669秒、キャッシュから取得したドキュメント
同上MySQL:0.2601秒、52要求(秒)、PHP:0.5081秒、合計:0.7683秒、キャッシュから取得したドキュメント
ご覧のとおり、Dittoはページ上の各ドキュメントに対して2つのMySQLクエリを作成します。 catalogRow_chunk.tplチャンクには、非標準のPHx修飾子が1つあり、これを使用して価格番号の形式を変更します:
[+価格:num_format +] 。 削除すると、値は次のようになります(20ドキュメント)。
catalogViewMySQL:0.0754秒、5要求(s)、PHP:0.2794秒、合計:0.3548秒、キャッシュから取得したドキュメント
同上MySQL:0.2218秒、32リクエスト(s)、PHP:0.5411秒、合計:0.7629秒、キャッシュから取得したドキュメント
奇妙なことに、Dittoはリクエストを大幅に少なくし始めました。 各ドキュメントには1つのリクエストがあります。 catalogView-一般的なリクエストが1つ未満。 リクエストが何であり、
PHxが
それを行う理由は
わかりませ
ん 。なぜなら、修飾子コードはデータベースではなくファイルにあるからです。 PHitがそのような修飾子をキャッシュするため、Dittoを使用するときに各PHx修飾子(非標準)でデータベースで1つの要求が行われる理由を疑問に思いました。
すべてがシンプルであることが判明しました。 Ditto(2.1.0)は、PHxが修飾子をキャッシュすることを許可しません。 各ドキュメントを「レンダリング」すると、PHxクラスの新しいオブジェクトが作成されます(関数
$ ditto-> render() )。 さて、そしてこれに加えて、ファイルからPHx修飾子を使用しない場合、各ドキュメントに対して1つの要求が多すぎます。
catalogViewはまだ十分にテストされていないため、エラーが発生する可能性があります。 見つかったバグを報告してください。
catalogView 1.0 RC1をダウンロードPSもちろん、MODx Revoについて考える時が来ましたが、MODx EvoのShopkeeperを「終了」して、バージョン1.0(現在のベータ版)をリリースすることにしました。