WEBアプリケーション研究室 開発ノート TOP

WEBアプリケーション研究室 開発ノート [PHP] 複数のページのサーバー側キャッシュを同じ時間に切れるようにする

スポンサーサイト

-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

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

例えば投稿日時順にならんだ全ユーザーの記事一覧ページと、特定のユーザーの記事一覧ページがあったとして、そのページを何らかの方法でサーバー側でキャッシュしたとします。
その時、見られたタイミングによってキャッシュが切れる時間がバラバラになると、この2ページで矛盾が起きる可能性があります。

これを同じ時間に切れるように出来ないかなあと・・・

今回はSmartyのキャッシュでやってみました。


$expire_interval = 180;

$smarty->caching = 2;

if(!$smarty->is_cached('test.tpl'))
{
//....いろいろ.
}

$smarty->cache_lifetime = $expire_interval - (time() % $expire_interval);
$smarty->display('test.tpl');
キャッシュの寿命時間をこのように設定してやります。後は同じにしたい他の所でも

$expire_interval = 180;
//.....
$smarty->cache_lifetime = $expire_interval - (time() % $expire_interval);
$smarty->display('foo.tpl');
とやれば、同じ時間に切れます。現在のUnixタイムスタンプを、キャッシュの更新間隔で割ったあまりが、キャッシュが切れる周期の時間から経過した秒数なので、そこから、算出してやります。

寿命の計算はキャッシュを生成する直前にやるといいと思います。重い処理を間に挟むと多少ずれます。


・・・・これ、まちがってないですよね?^^;
スポンサーサイト

    このエントリーをはてなブックマークに追加
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。