frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

Smarty Cache の名前。

ちょいとお仕事で Smarty のキャッシュファイルについて

調べてみたのだけど。

あのファイル名って、どうやって作ってんのかなぁ?

てなこったで、Smarty のコードを読み読みした結果をメモ。

  1. テンプレートファイルパスから、ファイル名だけを取り出す
  2. ファイル名にURLエンコードをかける
  3. CRC32アルゴリズムで値を取得
  4. 大文字16進数にして、上位のあまった桁を0で埋めた値に変換
  5. 「%%」を表示
  6. 4 の値の上位2桁を表示
  7. 「^」を表示
  8. 4 の値の上位3桁を表示
  9. 「^」を表示
  10. 4 の値を表示
  11. 「%%」を表示
  12. 1 の値を表示

という訳で、結果、キャッシュファイル名は、こんな内容になる、と。

%%4 の値の上位2桁^4 の値の上位3桁^4 の値1 の値%%

で、試しに、Smarty ん中に実装されてたルーチンを

そこだけピックアップしてみたら

ちゃんと実際に生成されているキャッシュファイル名と一致しました。

えがったえがった。

おまけ:

引き数にテンプレートファイルパスを指定すると、

Smarty キャッシュファイル名を返すスクリプト

※引き数のデフォルト値は template.tpl