- 締切済み
Smartyのキャッシュ
Smartyを使いキャッシュを作成しているのですが、そのキャッシュのファイル名をコメントとしてキャッシュファイルの中に記載したいと思っています このファイル名がどんなアルゴリズムか分からないのですが、Smartyでテンプレファイルを作成する場合に、そのキャッシュファイル名をコメント化して入れておく方法はありませんでしょうか 何卒宜しくお願い致します
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- muuming2001
- ベストアンサー率23% (202/847)
DBが更新されたかどうか だけであれば DN更新時に目印の空ファイルでも作ってそれを目印に キャッシュの再作成をすればいいかなぁ と思いましたが、 個別のデータを精査しなければならなければ判別つかないなら 実際にDB叩かないとイケないのでこの方法は使えないですね。
- muuming2001
- ベストアンサー率23% (202/847)
>>「データベースの値を書き換えた場合に」 との事なので、 DBが書き換わったかどうかの判断をし、 書き換わっているのであれば、その場合のみ $cache_lifetime を 0 にすると、キャッシュを再生成するようなロジックを書けばいいような気がするのですが。 そのほうが削除間違い、削除忘れなどの ヒューマンエラーも起こりにくいような気がしますし。
お礼
キャッシュはデータベースへの接続を減らして軽くする為に使っています もし毎回データベースに更新日等を見に行くのであれば、そもそもキャッシュの意味はなくなります データが数十万以上あり更新も通常は1日一回なのですが、稀に急遽データを非表示などにするケースがあるのです で、キャッシュのファイル名さえ特定出来れば、FTPで手動で消すなり出来るんだけどな~と思った次第です
- muuming2001
- ベストアンサー率23% (202/847)
なるほど http://www.smarty.net/docsv2/ja/variable.caching.tpl $caching 使ったことがありませんでした。勉強なります! ところでキャッシュファイルを物理に的に削除する方法でなく、 http://www.smarty.net/docsv2/ja/variable.cache.lifetime.tpl $cache_lifetime を 0 にすると、キャッシュを常に再生成します とありますので、削除しなければならない場合には こちらを利用する方法はいかがでしょう?
お礼
ありがとうございます 実は私が削除するのであれば何とでも出来るのですが、私以外が特定のファイルのキャッシュを削除しなくてはいけないケースが存在します その為にファイル名を特定してFTP等で接続し削除するという方法がどうしても必要になるのです
- muuming2001
- ベストアンサー率23% (202/847)
よく質問の意味がわからないです。 もう少し全体的なフローを、わかりやすい単語で記載していただけると助かります。 今回の場合 「キャッシュを作成」 ・ template_c以下にできる一時ファイルのこと? ・ 出力されるHTMLをファイルで指定ディレクトリに保存? 等々 曖昧かと思います。 「Smartyでテンプレファイルを作成する場合に、そのキャッシュファイル名をコメント化して入れておく方法」 この部分ももう少しわかりやすく出来ませんでしょうか。 テンプレートファイル内にコメントなりでファイル名を記載し、そのファイル名でキャッシュファイルを作成するということでしょうか?
補足
大変失礼致しました 内容としては以下です キャッシュファイルとは「$smarty->caching = 1;」で設定するキャッシュの事です キャッシュを格納するディレクトリの中に不思議なファイル名のファイルが自動で出来るのですが、このファイル名をそのキャッシュファイルに埋め込みたいと思っています 例えばhttp://aaa.com/bbb/ccc/1/というファイルをブラウザで見た場合、「0^7f1afccb30~略~a8d42f9e337c5.index.tpl.html」のような名前のファイルがキャッシィを格納しているフォルダに作成されます そのキャッシュのファイル名を「http://aaa.com/bbb/ccc/1/」のソースの中に「<!-- Cache file 1^7f1afccb30~略~a8d42f9e337c5.index.tpl.html -->」というようにコメントとして書き込む方法がないかと考えています 用途としては、データベースの値を書き換えた場合に、キャッシュファイルの更新時間が来るまで変更が反映されません その際に全部のキャッシュをクリアするのではなく、更新させたい1ファイルのキャッシュファイルのみ削除したいと思っています URLからキャッシュファイルのファイル名が分かれば可能だと思うのですが、そのような方法はありますでしょうか 何卒宜しくお願い致します
お礼
キャッシュに使うIDの書き方を工夫すれば、ファイル名の前半部分で特定が可能っぽいので、今回はそれでやってみる事にします ありがとうございました