RSS/SEO/Google/マッシュアップ/ちょっとした豆知識/エンタメ系など
fkoji.com > F.Ko-Jiの「一秒後は未来」 > SmartyにassignするデータをCache_Liteでキャッシュする
2007 04 20

SmartyにassignするデータをCache_Liteでキャッシュする

スポンサード リンク

Tips検索のページ表示処理がかなり遅かったのでキャッシュを使用するようにしました。具体的には、Smartyにassignする配列データをseriarizeしてCache_Liteでキャッシュするようにしただけです。これだけで体感10倍速くなりました。

Smartyにもキャッシュ機能はありますが、Smartyのキャッシュはテンプレート単位でキャッシュするようです。そのためクエリ付きのページに適用すると異なるクエリであっても同じコンテンツが表示されてしまうので使えません。

(補足: コメントで「Smartyのdisplayの第2引数にユニークなIDを与えれば、クエリ単位でもキャッシュできる」と教えていただきました。ありがとうございます。)

そこで、Smartyの表示結果ではなくSmartyに与えるデータをキャッシュする方法を採用しました。処理の流れをかなり省略して書くと以下の通り。

$cache = new Cache_Lite($options);
/* キャッシュ取得 */
$data = $cache->get($query);
if (!$data) {
    /* データ生成処理 */
    ・・・
    /* キャッシュ保存 */
    $cache->save(serialize($contents), $query);
} else {
    /* キャッシュデータを利用 */
    $contents = unserialize($data);
}
$smarty->assign($contents);
$smarty->display();

Tips検索の各ページは更新頻度が低いコンテンツで構成されているので、キャッシュのライフタイムは長めに48時間を設定しています。キャッシュされていないページは最初の1回目の表示だけは重いですが、2回目以降は素早く表示されます。

サイト内の大半のページは検索エンジンのクローラーが人より先にアクセスするので、検索エンジンが48時間以内にクロールしたページは表示が速くなります。本当はクローラーが拾いに来るときのページ生成を速くしたいのですが、それはなかなか難しいでしょうか。

はてなブックマーク数 livedoor クリップ Buzzurl

English version

「SmartyにassignするデータをCache_Liteでキャッシュする」を携帯で読む

前のエントリー: « 無料で使える7つのSEOツール
次のエントリー: Bloglinesの登録フィードがすべて未読になる異常事態発生 »

トラックバック

このエントリーのトラックバックURL:

コメント

クエリ付きのページでも、セッション変数を利用しているページでも、display() の第2引数である、cache_id をそれらに応じて unique にしてあげれば、クエリ毎でも、セッション変数毎にでも、キャッシュすることができます。(当然キャッシュファイルの量は増大します)

http://smarty.php.net/manual/en/caching.multiple.caches.php

>>とおりすがり様
Smartyのマニュアルあまり見ていなかったのでdisplayの第2引数は気づきませんでした。教えていただいてありがとうございます!

コメントを投稿

(承認されるまでコメントは表示されません。)




このブログをRSSリーダーで簡単購読
Subscribe with livedoor Reader Add to Google My Yahoo!に追加 Subscribe with Fastladder Bloglinesで閲読登録 はてなRSSに追加 エキサイトリーダーに登録

タイトル:

URL:

リンク用HTMLタグ:

powered by Google Chart API

梅酒コミュニティサイト

梅酒.in

Ad

なんかいろいろ

このブログの読者はこんなブログも読んでます。
あわせて読みたい

はてなブックマークカウンター

track feed

フィードメーター - F.Ko-Jiの「一秒後は未来」

スカウター : F.Ko-Jiの「一秒後は未来」








携帯からのアクセスは

QRコード
http://mob.fkoji.com/