拙著「FXはチャートで勝つ!」が発売されました。
FX(外国為替証拠金取引)でのチャートの読み方を解説しています。
自由国民社刊で、定価1,728円(消費税込み)です。
テンプレートモジュールのキャッシュとその効果
現在開発中のMovable Type 4.15では、主にパフォーマンスの向上がはかられています。
中でも、「テンプレートモジュールのキャッシュ」は、うまく活用することで、再構築の所要時間を大きく短縮することができます。
1.テンプレートモジュールのキャッシュの概要
Movable Type 4以降では、テンプレートのモジュール化が進められています。
さらに、Movable Type 4.1では、サイドバーをウィジェットで管理するようになっています。
これらのテンプレートモジュールやウィジェットの中には、多くのページで出力内容が同じになるものがあります。
例えば、「カテゴリーアーカイブ」のウィジェットは、ブログの全ページに同じ内容が出力されます。
テンプレートモジュールやウィジェットは、ページごとに再構築されます。
しかし、各ページに同じ内容が出力されるのであれば、一度だけ再構築して、それ以後は再構築済みのものを使いまわす方が効率的です。
また、そのようにすれば、再構築の所要時間を短縮することができます。
「テンプレートモジュールのキャッシュ」は、このようなことを行う機能です。
一度再構築したテンプレートモジュールやウィジェットをファイルにキャッシュし、同じものを再構築する際には、キャッシュしたものをファイルから読み込みます。
2.テンプレートモジュールのキャッシュの利用方法
テンプレートモジュールのキャッシュを使うには、以下の手順を取ります。
2-1.キャッシュの機能をオンにする
まず、ブログ全体でキャッシュの機能をオンにします。
「設定」→「公開」メニューを選び、公開の設定のページを開きます。
そのページの「モジュールオプション」の箇所で、「テンプレートモジュールをキャッシュする」のチェックをオンにします。
2-2.テンプレートごとのキャッシュ方法の設定
次に、キャッシュしたいテンプレートモジュールやウィジェットで、キャッシュする方法を指定します。
キャッシュするテンプレートモジュール/ウィジェットを編集する状態にし、「テンプレートの設定」の部分を開くと、「モジュールのキャッシュ」の部分で、キャッシュ方法を設定することができます。
「キャッシュを消すタイミング」をオンにした場合、一度再構築したテンプレートモジュール/ウィジェットを、一定時間キャッシュする動作になります。
また、「作成または更新後に無効にする」をオンにした場合、ブログ記事等を作成または更新するまで、キャッシュが有効になります。
例えば、「カテゴリアーカイブ」のウィジェットをキャッシュするとします。
このウィジェットは、カテゴリーを追加/編集するか、あるいはブログ記事を追加/削除すると、出力内容が変化します。
そこで、「作成または更新後に無効にする」をオンにして、「ブログ記事」と「カテゴリ」のチェックをオンにします。
3.キャッシュの効果
テンプレートモジュールのキャッシュを行うと、どの程度再構築が速くなるか、測定してみました。
MTOS4.15βの最新リビジョンを新規インストールした環境に、当ブログ全体(記事1,311件/コメント2,585件/トラックバック1,267件/カテゴリー47件)をインポートして、以下の3通りのキャッシュを設定して、ブログ全体の再構築の所要時間を測定しました。
- 方法A.キャッシュなし
- 方法B.「カテゴリアーカイブ」ウィジェットをキャッシュ
- 方法C.「カテゴリアーカイブ」と「月別アーカイブ」ウィジェットをキャッシュ
すると、以下のような結果が得られました。
方法 | 再構築の所要時間 |
---|---|
方法A | 15分47秒 |
方法B | 6分26秒 |
方法C | 4分46秒 |
このように、「カテゴリアーカイブ」と「月別アーカイブ」ウィジェットをキャッシュするだけで、キャッシュしない場合の3分の1弱まで、再構築の所要時間を短縮することができました。
特に、「カテゴリーアーカイブ」ウィジェットをキャッシュしたことによる効果が大きいです。
「カテゴリアーカイブ」「月別アーカイブ」とも、ブログ記事数を集計する処理があり、データベースアクセスが大量に発生するために、再構築に時間を要しているものと思われます。
このように、テンプレートモジュールのキャッシュは、再構築の所要時間の短縮に大きな効果を発揮します。
特に、データベースに多くアクセスするテンプレートモジュール/ウィジェットほど、キャッシュの効果が大きいです。
Movable Type 4.15がリリースされたら、ぜひ利用すべき機能だといえます。
4.キャッシュの注意点
テンプレートモジュールやウィジェットによっては、組み込み先のテンプレートによって、出力内容が変化するものがあります。
そのようなものをキャッシュする場合は、方法を工夫する必要があります。
この点については、後日解説したいと思います。