a-blog cms 2.0 の機能を考えてみた「静的出力機能編」
基本的には運用時にはシステムで用意されているキャッシュ機能を利用する事でオフの時と比べて10倍以上は速くなる。これで随分多くのアクセスを快適に処理できるが、もっと速くしたいという事になると別のキャッシュサーバを用意するのがオススメだ。
詳しくは a-blog cms の開発ブログ「a-blog cmsでnginx(キャッシュサーバ)を使ってみる」を読んで下さい。これで効率的に必要な部分のHTMLをキャッシュしてCMS自体の負荷をあげない事が可能になると思います。
それでも、静的HTMLが最強!って思う人もいるようなので、今回はサイトの動的生成を諦めて静的出力するための仕様を考えてみたいと思います。
a-blog cms の仕様として問題になりそうな点として、URLコンテキストの表記の仕方という部分が一番の問題になります。
例えば、お知らせ(news)の一覧ページのURLであらわすと /news/ になりますが、この2ページ目は /news/page/2/ になります。これをそのまま静的出力すると page というディレクトリに 2 というディレクトリを作り index.html を生成する感じになります。これは酷いサイトになってしまいそうなので、このディレクトリっぽい表記自身がダメという事になります。他にもカスタムフィールドを利用したようなコンテンツを絞り込んで表示させるような一覧についても同様です。
通常ページがデフォルトで entry-1.html という感じなので、ここでは page-2.html という一覧ページを生成し、ページャー部分のリンクをこのような感じにして対応させます。
タグの絞り込みや、検索機能、フォームも使えない事になります。とことんシンプルに機能を絞っていく事になり、以下のようなHTMLを作る事になると思われます。
- トップページ
- カテゴリー毎の一覧ページ(1ページ目はindex.html、それ以降はpage-2.htmlのような表記)
- エントリー毎のページ
全てのコンテンツが動的コンテンツだった場合には、これで大丈夫な気もするのですが、a-blog cms の良さであるコンテンツの一部だけをCMS化できるようにするという部分も考慮して静的出力できるようにする事にも対応できれば、その方がいいだろう。
その際には、利用しているテーマを書き出し先に一度コピーした後に、各フォルダの中にHTMLファイルを探して、1ファイルづつCMSで実行しつつ、再度上書きしていくようなプロセスが必要になると思う。一覧(index.html)、詳細(entry.html)、トップ(top.html)は必要無いので何かルールを作って_top.html のような名前でテンプレートは作り、アンダーバーで始まるファイルは静的出力をしないという感じにすると無駄なHTMLファイルが無い状態になる。
こんな仕様であれば、なんとか用意する事はできそうな気がするが、これを使う人がいるだろうか? これでイイってのは a-blog cms の機能として制限が入る事になるので、少し残念な気もするんだが...
ちょっと 2.0 には無理かもしれないけど書いてみました。