MODx EvolutionのCatalogViewスニペット

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ドキュメント





catalogView



MySQL:0.0722秒、6要求(秒)、PHP:0.2756秒、合計:0.3479秒、キャッシュから取得したドキュメント




同上



MySQL:0.1907秒、32リクエスト(s)、PHP:0.4672秒、合計:0.6579秒、キャッシュから取得したドキュメント




1ページあたり20ドキュメント





catalogView



MySQL: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ドキュメント)。



catalogView



MySQL: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(現在のベータ版)をリリースすることにしました。



All Articles