アルファサード株式会社 代表取締役 野田 純生のブログ


MTが生成した静的ファイルの管理。


公開日 : 2008-05-12 16:18:38


ほとんどメモ。ToDo的に書いておく。

Movable TypeをEnterprise CMS的に使う場合に、生成されるファイルの取り扱いに注意が必要。エントリーの削除、非公開の際には静的生成されたファイルは削除されるけれども、例えば以下のような場合に静的に生成されたファイルが残ってしまう (場合によっては残したくないファイルが残ってしまい、意図しないファイルが検索にひっかかってしまったりする (ここでは「ゴミ」と呼ぶ) )。

  1. テンプレートが削除された時
  2. ブログの公開パスが変更された時
  3. カテゴリーのベースネームが変更された時(且つカテゴリーアーカイブ (カテゴリー - 日付別) が指定されていてベースネームがアーカイブマッピングに含まれていた時)
  4. カテゴリーが削除された時(且つカテゴリーアーカイブ (カテゴリー - 日付別) が指定されていていた時)削除されるようです。すいません。
  5. 特定のエントリーを削除または非公開にしたことによって、特定の日付アーカイブにエントリーが存在しなくなった時
  6. ユーザーが削除された時 (且つユーザーベースのアーカイブが指定されていた時)
  7. ユーザーのdisplay-nameが変更になった時 (且つユーザーベースのアーカイブマッピングにdisplay-nameが含まれていた時)

* 最新版のMTOSではどうなるか試していない。

これらの各タイミングで、静的に構築されたファイルを削除し、再度再構築を行うことで(ゴミが残らずに)正常なファイル構成となるよね。

面倒なのは「5 (特定のエントリーを削除または非公開にしたことによって、特定の日付アーカイブにエントリーが存在しなくなった時)」だろうな。その他は何とかなるだろう。

むしろ、ステージングサーバー上でファイルを生成して、そのファイルを公開サーバーへ反映させているような運用の場合は、fileinfoテーブルを元に一旦生成されたファイルをクリーンアップしてしまって再構築し直した方がはやいかもしれない。ということで、今からちょっとだけ書く (かも)。


ちょっと書きかけ段階でメモ追記:

まとめて削除するならば、 fileinfoテーブルもどきを作って構築日時を記録するようにしておいてから、

  • template,category,entry,authorのidが既に存在しないもの(blogは除外して考える) は削除対象
  • 何らかのオブジェクトを修正した後、全再構築をかけて、(DB上の)構築日時が更新されていないもの (Indexアーカイブは除く)は削除対象
  • Indexアーカイブは、再構築直後に同じテンプレートIDの他のアーカイブを削除

でいけるか...な? だんだん混乱してきたよ。最初はfileinfo見て処理しようと思っていたけど、エントリーアーカイブのマッピングを修正した時なんからは重複するfileinfoレコードを丸めて? しまうから削除すべきファイルのチェックには使えないので。

カテゴリ


このブログを書いている人
野田純生の写真
野田 純生 (のだ すみお)

大阪府出身。ウェブアクセシビリティエバンジェリスト。 アルファサード株式会社の創業者であり、現役のプログラマ。経営理念は「テクノロジーによって顧客とパートナーに寄り添い、ウェブを良くする」。 プロフィール詳細へ