shortlink:http://modx.jp/?id=820長年の課題であるキャッシュ改善の第2弾です。今回実装された新キャッシュモードは強力。業界最軽量レベルのメモリ消費です。▲今回実装された新しいキャッシュモードと各CMSの比較グラフ。他のCMSは標準でキャッシュが有効になっていませんのでご注意ください。MODXのキャッシュはネイティブにシステムに組み込まれているため副作用もほとんどなく、キャッシュの存在を意識することなく安定動作します。その他、タグの記述方法にバリエーションを加え、Dreamweaverなどのオーサリングツールとの相性のよさをさらに高めました。HTMLコメントに埋め込む形で記述することで、オーサリングツールで作ったHTMLコードをそのままMODXのテンプレートとして利用することができます。これまでのMODXの弱点を補う機能として、チャンクの公開設定機能を追加しました。これにより、ページ単位の公開・非公開だけでなく、ページ内の各ブロック単位の公開・非公開が自由にコントロールできるようになりました。古いウィジェットを削除しましたviewport・マーキー・ティッカーなど、古いHTML技術を用いるウィジェットを削除しました。古いタイプのパーツのため利用されているケースはめったにないと思いますが、これらのウィジェットを利用している場合はカスタムウィジェットを自作するなどの対応が必要です。困った場合は問い合わせフォームやフォーラムなどを通じてご相談いただければフォローいたします。.htaccess自動設定(.htaccessファイルの生成を自動で行ないます。[(site_slogan)]を追加(チャンクなどで代用できるため機能的には必要ありませんが、汎用の配布テンプレートを作る際に都合がよいため標準実装します)PHPMailer送信エラー時のログ記録(何らかの理由により送信に失敗した場合にログを残します)新キャッシュ「バイパスモード」を追加グローバル設定の更新時、設定値がイレギュラーな場合はアラートを表示チャンクにpub_date・unpub_dateを実装(公開期間設定)チャンクに「公開ステータス」を追加。arrayエラーが発生するため修正http://forum.modx.jp/viewtopic.php?f=32&t=798投稿画面ツールチップがIEで正しく表示されないhttp://forum.modx.jp/viewtopic.php?f=32&t=794getTemplateVars()が複数の$idnamesを受けたときに、うまく処理できないバグを修正。https://github.com/modxcms-jp/evolution-jp/issues/10モジュール設定画面デザイン調整ユーザ情報編集時のパスワードメール送信タイミングの変更(OnManagerChangePasswordイベント発生後に処理)getTemplateVars()が複数の$idnamesを受けたときに、うまく処理できないバグを修正。ついてフォーラムまたは問い合わせフォームを通じてご連絡ください。▲キャッシュ設定として「バイパスモード」を新しく追加しました。バイパスモードに設定すると15KB程度のメモリで動作します。通常、軽量CMSとして分類されるタイプのCMSでも1MB前後のメモリを消費します。▲キャッシュモードはグローバル設定で切り替えます。バイパスモードではページ出力を完全なHTMLとして保存し、二度目からのアクセスではシステム本体の処理を通さずキャッシュの中身をそのまま出力します。そのため、スニペットコールを[!キャッシュ無効書式!]で書いてもキャッシュは無効になりません。アクセスのたびごとに動的な制御を行なうようなプラグイン処理も使えません。管理画面にログインしている間や、POST操作を行なった場合は、自動的に通常のキャッシュモードにスイッチしますので、QuickManagerやeFormなどは特に問題なく利用できます。※当サイトは随所に高度なMODXテクニックを用いてますが、現在パイパスモードで安定動作しております。フッタ付近にメモリ消費を表示しておりますので、参考にご覧ください。通常のキャッシュ処理も改善しました。これまでは、リソースIDごとにしかキャッシュを管理できなかったため、たとえばDittoのページ分割処理(数件ごとにページを分ける機能)を用いる場合はキャッシュを無効にして動的に出力する必要がありました。URI単位でキャッシュを管理するようにしましたので、当サイトのニュース記事一覧のようにページを分割する場合でもキャッシュを利用できます。リッチテキストで編集」の設定を追加しました。バナーの管理などにチャンクを用いている場合、表示期間を自動的に制御することができます。不要になったチャンクを一時的に無効にしておくことができます。これまでのMODXでは、公開期間を設定できるのはリソースのみでした。ページ自体の公開期間制御は簡単にできますが、ページ内の表示内容の公開期間制御はスニペットなどを利用する必要があるため、多少のスキルが必要でした。今回の改善により、チャンクを使って簡単にページ内各部の公開期間を設定できます。▲既存サイトのHTMLファイルをそのまま利用できるようにしました。cmsのthemesディレクトリの機能を参考にしています。物理的に存在するパスが異なりますので、CGIやPHPファイルを実行することはできません。cmsのように、テンプレートの切り替えと連動させることは現在のところできません。ファイル中にスニペットコールやコンフィグ変数を記述・処理できます。cmsと同様、既存サイトの取り込みに強いCMSとしてMODXを活用できます。[[eForm?tpl=フォーム&report=メール]]▲eFormではformidパラメータが必須とされていましたが、コーディングミスであることが分かったため修正しました。実際には上記のように2つのパラメータ指定のみが必要です。▲グローバル設定更新時、各部の設定が間違っている場合にアラートを表示するように改善しました。▲フレンドリーURL設定時は、自動的に.htaccessファイルを生成しますが、正しく生成できない場合は上記のようなアラートを表示します。上記画像の例では、設置ディレクトリに書き込み権限を与えてなかったために生成処理ができず、エラーとなっています。-->上記のように、HTMLコメントで包んだ形でのMODXタグ記述が可能になりました。上記の記述は、[[Wayfinder?startId=0&level=1]]実際にはこのように変換されます。処理時には、HTMLコメントとダミーのHTML記述部分は削除され、変数部分のみが実行されます。スニペットコール・リソース変数・テンプレート変数・チャンク・コンフィグ変数など、ひととおり対応しています。スニペットコールの複数行記述にも対応しています。/#modx上記の2つの文字列がトリガーになります。この2つのコメントにはさまれた部分は出力されません。開始コメント内の#modx文字列以降に記述された部分のみが出力されます。MODXだけでサイトを組み立てている場合はかえって手間がかかるため意味がありませんが、ダミーのデザインコードを残したままMODXのテンプレートとして使えるため、Dreamweaverなどのオーサリングツールを利用してテンプレートを作っている場合は便利に利用できます。cmsなどで高い評価を受けています。今までは、Dreamweaverで作ったHTMLコードはそのままでは使えず、動的出力部分をスニペットコールなどに置き換える作業が必要なため、頻繁にテンプレートを更新する場合は不便でした。※過去バージョンのMODXでも、OnParseDocumentイベントを用いて同等の機能実装が可能ですが、負荷が高くなるため注意が必要です。※注意この書式は最新版では変更されています。[[スニペットコールなど]]--><!--@IGNORE:BEGIN-->・・・出力しない文字列・・・<!--@IGNORE:END-->最新版では上記の2つのコマンドを組み合わせます。WebMatrix版についてこれから調整します。気付いた点があればフォーラムまたは問い合わせフォームからフィードバックをお願いします。フォーラムやブログ、Twitterなどで寄せられた要望はこまめに拾って対応しておりますので、気軽に要望いただければ反映に努めたいと思います。継続的にスポンサーを募集しており、ご支援に応じて、活動が安定します(特に印刷物の費用が必要です)。近年の活動の充実も、各方面からのご支援によるものです。具体的な条件については個別に相談させてください。自慢のMODXサイトがありましたら、ぜひ事例掲載にお立ち寄りください。