PowerCMS X は、日本国内で導入実績 3,000 サイトを超える、高性能・高機能のハイエンド CMS「PowerCMS」のノウハウを活かして、全くゼロベースで設計・実装されたリリースから1年の新しいCMSです。 PowerCMS X は、開発言語 PHP で書かれ、高い拡張性、高速な静的ファイルパブリッシュを特徴としています。 アルファサード株式会社では、この度、並列処理やクエリキャッシュ技術などによる効果で ver.1.0比較で1000%、従来比2000%再構築速度の高速化を実現した PowerCMS X ver.2.0 の提供を開始します。
再構築処理の高速化
動画: PowerCMS X 2.0 の再構築処理
再構築ベンチマーク
CMS の再構築処理時間の比較結果 (単位: 秒)
- AWSの t3.mediumで計測。PHP7.3 / PowerCMS 5はサーバーモデルPSGI
- 1000記事/ 25カテゴリ / 年別アーカイブ/ トップページなどおおよそ1100ページをパブリッシュ
再構築処理の計測結果
CMS |
PowerCMS 5 |
PowerCMS X ver.1 |
PowerCMS X ver.2 |
平均 |
41.4秒 |
19.6秒 |
2.0秒 |
1回目 |
41秒 |
20秒 |
2秒 |
2回目 |
41秒 |
20秒 |
2秒 |
3回目 |
43秒 |
20秒 |
2秒 |
4回目 |
41秒 |
19秒 |
2秒 |
5回目 |
41秒 |
19秒 |
2秒 |
新機能
リレーションの逆引き・相互の再構築トリガー、コメント機能など新機能も多数
- 並列・非同期再構築・クエリキャッシュなどの新機能により再構築が最大2000%高速化されました。
- パフォーマンスを計測したり、細かくチューニングするための機能が大幅に強化されました。
- コメント機能を追加しました。記事にコメントを受け付けられるようになります。
- フィールドデータのエクスポート & インポートに対応しました。
- モデルのカラムに「浮動小数点」「固定小数点」を指定可能になりました。
- バイナリ型のカラムへのアップロードファイルに許可する拡張子を指定できるようになりました。
- tools/test.php を追加しました。テンプレート、PHPのコンパイルチェック、jsonのデコードチェックを行い、エラーを指摘します。
- tools/backupSQL.php、tools/restoreSQL.php、tools/rebuildFiles.php を追加しました。データベースのバックアップと復元、ファイルの復元機能を提供します。
- プラグイン「CookieUtilities」を追加しました。クッキーのセット、取得、削除がテンプレート・タグで行えるようになります。
- プラグイン「CacheManager」を追加しました。キャッシュの種別ごとに管理画面からキャッシュをクリアできます。
- プラグイン「RebuildRelations」を追加しました。リレーション対象のオブジェクト、逆引きオブジェクトの相互の再構築トリガーをセットします。
- リレーションの逆引きでオブジェクトをループ出力するブロックタグ「mt:referencedobjects」を追加しました。
- ファンクションタグ「mt:math」で、四則演算('%', '/', '+', '-' , '*')をサポートしました。
- ファンクションタグ「mt:mtime」を追加しました、file 又は module 属性を指定して、該当ファイル/モジュールの更新タイムスタンプを取得します。
- 一覧画面用のサムネイルを静的生成するオプションを追加しました。
- 日付が前後のオブジェクトを再構築するオプションを追加しました。モデルごとに設定が可能です。
- CSVエクスポート/インポートで、リレーション対象が階層指定のある時「/」付きでパスをエクスポートし、同一名のオブジェクトを識別してインポートできるようになりました。
- ExternalPreviewリクエストを POSTリクエストに変更し、パスワード機能を追加しました。
- グローバルモディファイア「remove_blank(空行の削除)」「increment(加算)」「decrement(減算)」「cast_to(値のキャスト)」を追加しました。
改善された機能
いただいたフィードバックを元に細かな改善点も多数
- 一覧画面からオブジェクトのリビジョンを作成できるようになりました。
- 一覧画面からオブジェクトを削除する処理を分割して処理するようにして、オブジェクトが多い時にタイムアウトにならないようにしました。
- 一覧画面からのアクション、タグの追加・タグの削除、ステータス変更、プラグイン「BatchApproval」のワークフローについて、実行後の再構築処理を分割処理するようにしました。
- 条件タグ「mt:if」のtag属性指定での評価時に属性値を渡せるようになりました。
- 条件タグ「mt:if」のtest属性値の実行結果を eq, likeなどで比較できるようになりました。
- 条件タグ「mt:if」で正規表現による比較を行う「match」属性がサポートされました。
- リビジョン一覧にステータスアイコンを追加しました。
- リビジョン一覧で種類別にフィルタリングするシステムフィルタを追加しました。
- URLを物理削除した時、エディタで挿入したアセットのサムネイルを再生成できるようになりました。
- ビューの編集画面で、条件タグの外で「mt:else」「mt:elseif」「mt:elseifgetvar」が利用されている時に警告を表示して、保存されないようにしました。
- ビューの編集画面で PHPコードに変換されたコンパイル済みコードの構文チェックを追加し、エラーの際には保存に失敗するようにしました。
- ORマッパ「PADO」のloadメソッドが、NOT INに対応しました。
- 「SearchEstraier」プラグインで、全文検索実行時に全角半角を吸収するようにしました。
- 「SearchEstraier」プラグインで、本文自動抽出の範囲を設定で調整できるようになりました。
- プラグイン「Abs2Rel」でlink rel="canonical"を相対パス変換から除外するようにしました。
- 再構築ウィンドウのサイズを小さくし、UIデザインを変更しました。
- デバッグフッタに Load Average と Peak Memory を追加しました。
- カラムタイプの変更時や、URLマップのパス指定変更時などで、不適切な設定を行った場合にエラーを表示するようにしました。
- マウントされたディスクなどに対するファイル書き込みの際にパフォーマンスが低下しないようにファイル書き込み処理を改善しました。
- Websiteテーマを改良しました。また、Websiteテーマにコメント用のビューが追加されました。
- tools/worker.php 実行時に進捗を表示する --verbose オプションがサポートされました。