SOY CMSのフロントコントローラで例外処理の大幅な削減の記事に引き続き、SOY CMSの表示速度の改善を行いました。
今回の改修箇所は各プラグインのインストール状況の確認になります。
SOY CMSの各プラグインのステータスは
/ドキュメントルート/サイトID/.plugin/以下
でプラグインID.activeのファイルの有無で管理しています。
サイトID ├── .cache ├── .db ├── .entry_template ├── .htaccess ├── .module ├── .plugin │ ├── .htaccess │ ├── CustomFieldAdvanced.active │ ├── CustomFieldAdvanced.config │ ├── CustomSearchField.active │ ├── SOYShopLoginCheck.active │ ├── calendar.active │ ├── calendar.inited │ ├── soycms_info.active │ ├── soycms_info.inited │ ├── soycms_search_block.active │ ├── soycms_thumbnail.active │ ├── x_html_cache.active │ └── x_html_cache.config ├── .quarantine ├── .template ├── css ├── files ├── im.php ├── image ├── index.php └── js
プログラムを実行する際に、ファイルシステム周りの操作は負荷が大きいので、SOY CMSの何らかの実行の際に各プラグインの.activeファイルを調べておき、キャッシュとして保存しておきます。
以後の操作は任意のプラグインが有効であるか?を調べる時にキャッシュ化したプラグインの有効状況の配列を利用するようにしています。
改修前のSOY CMSはプラグインが有効でなくても、とりあえず同梱されているすべてのプラグインのクラスファイルを読み込んでおき、個々のクラスファイル内で任意のプラグインの状態を確認していました。
今回の改修により、有効にしていないプラグインのクラスファイルは読み込まないという仕様に変更し、プラグイン毎のファイルの読み込みと実行の回数を大幅に削減しています。
今回対応分を含んだパッケージは下記のサイトからダウンロード出来ます。
https://saitodev.co/soycms/soycms/
関連記事
SOY Shopで設定周りのデータベース参照回数を減らし表示速度を改善