- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Smartyでキャッシュ無効なのにtemplate_cディレクトリを読みに行き最新データが表示に反映されない)
Smartyでキャッシュ無効なのにtemplate_cディレクトリを読みに行き最新データが表示に反映されない
このQ&Aのポイント
- Smartyを使用していて、キャッシュの設定は特にしていない(デフォルト)なのですが、ファイルの更新が反映されず、以前のページが表示されることがあります。
- template_cディレクトリにはファイルがたくさんありますが、cacheディレクトリは空です。最新の情報を表示させるためには、template_cディレクトリのファイルをすべて削除する必要があります。
- この問題の原因は明確ではありませんが、Smartyがキャッシュの使用を無視してtemplate_cディレクトリを読みに行くことがあります。解決策としては、キャッシュの設定を見直すか、template_cディレクトリの削除を自動化する方法を検討することがおすすめです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
サーバーの日時と自分のパソコンの日時に差が有る場合起こる可能性があります。 つまり、新しくアップロードされたテンプレートの日付けよりも中間コンパイルソース(template_cに入っているファイル)の日付けが新しい場合、テンプレートが更新されていない と判断し、中間コンパイルをそのまま使う という動きをするからです。 また、Smarty特有のバグのようで、たまに中間コンパイルソースがアホになります。 template_cにあまりにも多いファイルがたまっていくと起こるようですので、Smarty.class.phpを拡張して、template_cに表向きのURLと同様のディレクトリを掘るように作っておくと起こりにくいようです。 例えば。 /index.php /dir/index.php /hoge/index.php /hoge/foo/index.php というような構成の場合。 template_cにも template_c/ template_c/dir/ template_c/hoge/ template_c/hoge/foo/ となるように自動的にdirを掘ってくれるような子クラスをつくっておくと発生しにくいようです (私の経験則ですので、確実におこらなくなるってわけじゃないです)
お礼
ご回答ありがとうございます なるほど、ちょっと複雑ですね。 自分のスキルではできるかどうかわかりませんが、トライしてみたいと思います。 ありがとうございます。