[Tep-j-general] キャッシュを使う条件について

Back to archive index

TAMURA Toshihiko tamur****@bitsc*****
2010年 5月 25日 (火) 16:55:06 JST


こんにちは、田村です。

土屋さん:
> catalog/includes/column_left.phpで、カテゴリーBOXのキャッシュを使う条件が、
> 
>    if ( (USE_CACHE == 'true')&&  !SID ) {
>      echo tep_cache_categories_box();
>    } else {
>      include(DIR_WS_BOXES . 'categories.php');
>    }
> 
> となっていますが、始めのif文の「&&  !SID」がなぜ必要なのかがわかりません。
> 
> この場合、セッションIDがついている初回のアクセス時はキャッシュを使わずに
>  include(DIR_WS_BOXES . 'categories.php');
> が呼び出されると思うのですが、
> セッションIDがついている初回のアクセス時から
>  echo tep_cache_categories_box();
> を使うと何かまずいことがあるでしょうか?

セッションIDがついている状態のアクセスで、
キャッシュ・ファイルを生成すると、
セッションIDがキャッシュ内のリンクに記録されます。

続いてアクセスしたユーザがキャッシュ内のリンクをクリックすると、
キャッシュ・ファイルを生成したユーザと同じセッションIDに
なってしまいます。

それがまずいです。


> なぜこのようなことをお聞きするかと申しますと、
> 今このプログラムを真似て、新着商品をキャッシュで表示させているのですが、
> 訪問者があるたびに、キャッシュではなくincludesで元プログラムが呼び出されており、
> その処理が重たいため、Slowqueryに頻繁に記録されております。
> (新着商品を表示させるプログラムは、カテゴリの条件などをいろいろ加えているため、
> どうしても処理が重たくなってしまいます。)

初回アクセス時からキャッシュを利用するためには、
キャッシュ・ファイルに記録されているセッションIDを、
当該ユーザのセッションIDに置換するような
仕組みを追加する方法もあります。


それから、新着商品の処理が重いということですが、
productsテーブルにインデックスを追加すれば改善するかもしれません。

(参照)
Re: 新着商品表示が遅い (Tep-j-general)
http://sourceforge.jp/projects/tep-j/lists/archive/general/2005-May/004140.html

-- 
田村敏彦 / 株式会社ビットスコープ
E-mail:tamur****@bitsc*****
http://www.bitscope.co.jp/




Tep-j-general メーリングリストの案内
Back to archive index