技術日記
ファイルがない場合だけ動的生成するCMSEdit

思いつきアイディア。mod_rewriteを使って、ファイルが存在したらそのファイル自体をそのまま(httpdのレベルで)返し、なければWebアプリケーションを呼ぶという仕組みはよくある。

呼ばれた先のWebアプリケーションで、リクエストに応じた処理を行って結果を返すというのが動的生成。静的生成は、管理ツールなんかでコンテンツを投稿したら、その時点でHTMLファイルとかを生成して、Web公開ディレクトリに置いておく。

その中間として、コンテンツが投稿された時点ではHTMLファイルは存在せず、アクセスされた時にオンタイムで動的生成して、そのファイルをWeb公開ディレクトリに直接ファイルとして保存してしまう。

仕組み的にはコンテンツキャッシュに似ているけど、キャッシュではなくて実コンテンツファイルを初回アクセス時に生成する仕組み。

アクセスのないコンテンツは定期的に削除してしまってディスク使用量を削減したり(今時あまり意味ないだろうけど)、すべてのコンテンツに影響がある設定変更などを行った場合は、すべてのコンテンツを削除してしまうだけで、またアクセスがあったときに自動生成される。

フロントのWebサーバーを追加したりするときは、コンテンツファイルの全コピーを行わなくても、そのサーバーにアクセスがあったときに必要なファイルが生成されるので、DBサーバーの負荷が適当に分散される。 昔MovableTypeとかで全リビルドとかすると結構大変だったし。

といった感じの仕組み。すでにどこかにあるかな?

Published At2011-11-11 16:24Updated At2011-11-11 16:24