第8回 Smartyの便利な機能を使いこなす(その2:キャッシュ後編) - Smarty講座

PHPセキュリティ

yossy先生のSmarty講座

Lecutures on PHP

第8回 Smartyの便利な機能を使いこなす(その2:キャッシュ後編) (その1)

 このエントリーをはてなブックマークに追加

今回は、第7回の続きでキャッシュの使い方について説明します。

バージョンアップ

yossy先生さてその前に…

前回、バージョン2.6.20がリリースされているという話題を挙げましたが、何ともタイミングが悪いことにその記事が公開される直前の12月2日、新バージョンの2.6.21がリリースされていました。
(追記: 更にこの原稿公開(12/18)と同じタイミングで2.6.22が公開されたようです……)

セキュリティホールの修正など含まれているので、Smarty講座第1回の記事を参考にインストールしてください。

部分的にキャッシュ

最近のWebページはブログが流行ったこともあり、ガジェットやリンクなどメインとなるコンテンツ以外の情報をサイドメニューに配置する2ペインや3ペインのレイアウトが非常に多くなりました。

PHPプロ! のレイアウトも2ペインですね。

PHPプロ!のレイアウト

このような構成にしたとき、メインのコンテンツはキャッシュしたいがサイドメニューの内容はキャッシュしたくない。
もしくはサイドメニューの内容のキャッシュを他のページでも使い回せるようにしたい、などの要望が出てくると思います。

yossy先生さて第4回で組み込み関数{include}の説明をしました。{include}は他のテンプレートファイルを指定位置に読み込む関数で、ヘッダやフッタなど共通部分の管理に役に立つ、という話をしましたが覚えてますでしょうか?
これを使えば、部分的にキャッシュさせることができそうな気がしますが…

ではここで問題。{include}を使ったページがキャッシュされた場合、どのような動作になるでしょうか?

答えは、複数のテンプレートから共通で使えるキャッシュが保存される

…ということはなくて、{include}を呼んだテンプレートに結果が埋め込まれた形でキャッシュされます。
なので、他のテンプレートとキャッシュを使い回すことは出来ません。

そこで、この問題を解決する別の組み込み関数を紹介します。{insert}です。

  • 1
  • 2

  



Pick Up Q&A

Q
include されたファイルの変数
 このエントリーをはてなブックマークに追加 
A
出来ます。include(require)は、その部分に読み込むファイルの内容を展開したのと同義です。エディタでファイル読み込み(あるいはコピペ)した状態と同じだと考えていいです。 #defineや変数定義だけの共通フ...

>>続きを読む

shimix様、いつもわかりやすい説明をありがとうございます。 「includeはエディタでコピペした状態と同じ」 この表現、私も授業で使わせていただきたいと思います。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)