SOY Shopで公開側の表示に大きな影響を与えている箇所を調べたところ、
・フロントコントローラで大域の例外処理
・各種設定状況を調べる
・各プラグインの有効状態を調べる
がありました。
一番目の大域例外処理はSOY CMSのフロントコントローラで例外処理の大幅な削減の記事に記載した内容と同じなので、この場では詳細に触れないことにします。
各種設定状況というのは、SOY ShopではCMS本体と各プラグインの設定をSOYShop_DataSetsオブジェクトを介して各種設定毎にデータベースで値を管理します。
値はKVS(Key-Value Store)形式で管理していて、設定で確認したいことがある度にデータベースにキーを渡し設定内容を取得します。
KVS(Key-Valueストア / キーバリューストア)とは - 意味をわかりやすく - IT用語辞典 e-Words
SOY Shopでは一つのページを表示するだけでも、設定の参照が数十回を超えることがあるので、都度参照では無視できない処理になります。
ここで、よく参照する設定内容は事前に取得しておき、データベースの参照回数を減らすようにしました。
※SOY CMSでは各主設定内容はPHPのセッションもしくは、プラグイン毎が持つファイルになり、上記の問題は発生していません。
※データベースからの参照はメモリからの参照よりも処理時間を要する
各プラグインの有効状態は、SOY Shopのプラグインの有効の有無はデータベースに格納されており、処理中に任意のプラグインが有効であれば指定した処理を続けるという処理が頻繁にあります。
有効状態のチェックも、有効にしているプラグインのIDをデータベースから事前にすべて取得して配列で管理しておき、以後の有効のチェックは配列に値があるか?でチェックを行うようにしています。
今回対応分を含んだパッケージは下記のサイトからダウンロード出来ます。
https://saitodev.co/soycms/soyshop/