MT4.2のテンプレートモジュールのキャッシュに関する追記

2011年1月30日(日) 14:10 | 日記

前回の日記(コメントが表示されなかったので、あわてて直しました)で説明不足だった点を補足します。

このサイトでは、コメント欄およびトラックバック欄は日記の記事別のページのみに表示されます。記事別ページはアーカイブテンプレートからスタティックに生成しているわけですが、テンプレート内のいくつかの要素をモジュール化していて、その中に「コメント」「トラックバック」のモジュールも含まれていました。つまり、テンプレートの中にコメント欄を生成するためのソースを直接書いているのではなく、モジュールという形で外側にコメント欄のデータを用意しておいて、それを再構築のときにファイルごとに読み込んでいるのです。
これをキャッシュするとどうなるかというと、設定にもよるんでしょうけど、ある記事に対するコメントをどこかの段階でキャッシュとして保存して、その記事が「コメントなし」だったとすると、本来ならばコメントが表示される記事に対してもそのキャッシュが反映されてしまい、再構築するとコメント欄が表示されなくなってしまうのです。
キャッシュしなければ、再構築のたびに各記事のコメントをファイルごとに読み込むことになるので、もちろんコメントは正しく表示されます。

考えてみれば、モジュールは複数のテンプレートで共通となるソースを一元化することが目的であって、コメント欄とトラックバック欄は記事別ページでしか使わないから、モジュール化する意味ってないんですよね。
唯一キャッシュを使って意味がありそうな共通モジュールは、タイトル周りのソースです。「フォーキー☆カーニバル」というサイト名とリンク、その下の説明書きは、現状ではデータベースから読み込んで生成しています。2000個のファイルを再構築すれば、全く同じデータを2000回読み込むことになるわけで、そう考えると確かに無駄です。日記のタイトルはコメント欄と違ってすべてのページで共通なので、こういうところでキャッシュを利用するのが正しいやり方なんでしょうね。
というわけで、公開設定のキャッシュは有効にして、コメントとトラックバックのソースはモジュール化をやめてテンプレートに直接記述するということで、この問題は決着したいと思います。

コメントを投稿

※サーバーの状況によって、投稿完了まで時間がかかることがあります。
※投稿内容がすぐに反映されないことがありますが、ページを再読み込みするとコメントが表示されます。
※入力したURLは公開されますが、メールアドレスは公開されません(管理者に対してのみ通知されます)。