PHPで再構築を軽量化する

SSK Worldでは、ブログ管理用のサーバーアプリケーション・Movable Typeでサイト全体を運用しているわけですが、Movable Typeを使っているWeb管理者のストレスになりやすい作業に、「再構築」というものがあります。

投稿されたブログ記事や、月別、カテゴリー別などのアーカイブは、Webブラウザで表示できる形に整形する必要がありますが、Movable Typeでは、基本的にはあらかじめ整形されたファイルを作っておいて、アクセスがあったときにはこれをそのまま表示する…という手順で動作しています。このファイルを作っておく作業を「再構築」と呼んでいます。アクセスがあったときに、その都度データベースから整形されたファイルを生成して送り出す「動的再構築」という手法もあり、これに対してあらかじめファイルを作っておく手法は「静的再構築」とも呼ばれます。

静的再構築の場合、通常は、新しい記事が投稿されたときなどに、更新しなくてはならないファイルだけが再構築されるわけですが、サイトのデザインを変更したとき等には、すべてのページを再構築する必要が出てきます。記事のデータだけでなく、表示フォーマットも含めたファイル全体を出力しておくため、再構築作業時のサーバーへの負荷は大きくなり、最悪の場合には再構築作業がサーバーのタイムアウトで終了できない場合もあり得ます。また、記事数が多くなってくるとディスクスペースもより多く消費することになります。

一方、動的再構築の場合には、整形したファイルを置いておくサーバースペースは不要ですし、そもそも管理者側から見たときには明示的な再構築作業はありませんから、作成しているときのストレスは少なくなります。しかし、実際にアクセスがあったときに、ページを生成するためにサーバーには負荷が掛かり、表示されるまでに待たされるようになってきます。Web管理者に負担を掛ける静的再構築、閲覧するお客様に不満が出てしまうかも知れない動的再構築…と言えるかも知れません。


SSK Worldでは、これらの中間的な解として、藤本壱さんの著書「AjaxとPHPによる MovableType高速&最強システム構築法」で使われている手法を利用してみました。再構築するときに、個々の記事やアーカイブのページ全体を生成するのではなく、タグとして挿入されるデータを変数に代入するPHPスクリプトだけを生成しておきます。表示するときには、表示フォーマットを記述したインデックステンプレートに、PHPの変数をその都度差し込んでいく…という作りになっています。文章ではわかりにくいと思いますので、詳しくは本を読んでみてください。

Movable Typeのシステムにとっては、実に回りくどい処理になりますし、表示をカスタマイズしようとすると作業はとんでもなく煩雑になりますが、ひとたび仕組みが完成してしまえば、再構築の処理はこれまでよりもずいぶん短縮されます。もっとも、私の場合にはタグの内部に相当ややこしい処理がありますし、記事数も既に1,000を超えていますから、ブログ全体を再構築すると分単位の時間はかかるわけですが。また、PHPスクリプトを処理する分だけ、画面表示のレスポンスは低下するはずですが、実際に使ってみた感覚ではそれほど違和感はありません。作る側にとっても、読む側にとっても嬉しいですね。


投稿日

カテゴリー:

投稿者:



コメント

コメントを残す

1回のみ
毎月

記事を気に入っていただけましたか?よろしければ、今後のSSK Worldの活動に向けてご支援をお願いいたします。

SSK Worldを「面白い!」と思っていただける方がありましたら、今後の当サイトの活動継続に向けて、ご支援をお願いいたします。

金額を選択

¥100
¥500
¥1,000
¥500
¥1,000
¥2,000

またはカスタム金額を入力

¥

ご協力いただき、ありがとうございます。

ご協力いただき、ありがとうございます。

送金送金

タグクラウド

2年縛り Amazon Android BESS Bluetooth CF-B5 CF-R2 CF-R4 CF-RZ4 CF-SV8 DIY iPhone LTE Movable Type Nintendo Switch NuAns NEO Reloaded SNS SSD USB PD Webサイト Webブラウザー Windows 10 Windows XP カメラ カーナビ クルマ ショップ ステップワゴンスパーダ スマートフォン バージョンアップ ブログ マラソン レッツノート ログハウス 中日ドラゴンズ 伊豆 倉庫 健康 写真 合唱 塗装 家族 携帯電話 旅行 日本プロ野球 映画 暮らし 東京 槇原敬之 浜松 無線LAN 自作PC 芝生 花壇 薪ストーブ 薪割り 記念日 野球 音楽 食べる