TOTAL ACCESS 無料カウンター  UNIQUE ACCESS 無料カウンター

2008年9月1日月曜日

WEBサイトの構造を考える -その7-

9月になりました。まだ暑い日が続いていますが、何とか生きています。翔市です。さて、8月は結局1個も記事を書かなかったのですが、今月はそれを避けるために早速シリーズ「WEBサイトの構造を考える」の第7回の記事を書いてみようと思います。前回までいったい何を書いてきたのかいよいよ忘れてきましたが、このシリーズの最終目標は「オーバーヘッドを極限まで減らすためにPHP等のサーバサイドスクリプトの使用を可能な限り避けてAjaxとXMLを駆使した高速なブログシステムを構築する」ということだったような気がします(ぉい

ここのところAjaxとXMLTを組み合わせたサイト構築を容易に出来るようにするためのjQueryライブラリの構築をしてきましたが、それがほぼ完成しました。このライブラリについては次に書く記事に任せるとして、このライブラリの完成によって全体像が見えてきました。

大まかな仕様は以下の通り

  1. 記事データの保存・管理はDBで行う
  2. 1記事1ファイルのgzipで圧縮されたXMLファイルとする
  3. ファイル数の増大を防ぐため、ファイル数上限を設定し、ファイル数上限を超えた場合は古い記事のファイルから削除する
  4. 削除された古い記事をロードする場合はサーバサイドスクリプトを介してDBからXML形式で取得する
  5. 記事の投稿・編集を行うページはほぼ別アプリケーションとして構築する
  6. JavascriptのフレームワークはjQueryを使用
  7. サーバサイドスクリプトはPHPを使用、フレームワークはZend Frameworkを使用
といった感じを予定しています。ブログを表示したときの動作順序は以下の通り
  1. index.htmlをロード
  2. JSON形式でロードすべき記事リストをロード
  3. JSONデータでXMLファイルが指定されていれば、該当するファイルをロード
  4. JSONデータでDBが指定されていればサーバサイドスクリプトへリクエストを発行、ロード
  5. ロードしたXMLデータをXSLTで整形し、順次index.htmlへインサート
となります。検索機能などをつけるなら、この順序の2番目のJSONデータを変化させるだけでOK。
注意すべき点はDBがXML形式でクエリの結果を返してもらわないと困るので、例えばMySQLを使用する場合だとMySQL5.1以降のバージョンを使用する必要があります。また、まだ解決していないのは"SEO対策"と"Ajaxとhistory"の問題。とくにhistoryの実装が面倒になりそうですね・・・

記事の投稿・編集を行うアプリケーションはFrameworkを用いた、ユーザ管理・認証機能つきの"ありがちな"アプリケーションになると思うので特に変わったことはありません。いちおう投稿時の順序を書くと
  1. 記事のPOSTを受ける
  2. DBへ登録
  3. XMLファイルを生成
  4. ファイル上限を超えている場合は一番古いファイルを削除
となります。XML(キャッシュ)ファイルの生成が特徴的なくらい。あと、インターフェースレベルにおいての話ではこちらもAjax+XSLTを使った構造にしたいところです。どちらかというとこちらは動作の高速性能より、XSS、XSRF、その他HACK対策(いまさらながらSQLインジェクション対策も)のほうに工数を費やす形になると思います。

という感じに作るべき全体像がかなり見えてきました。
次の記事では今回作成したjQueryのAjaxsltライブラリの紹介をします。