发现现在的清除缓存做的比较粗!和之前没大变化啊!和2.0.5一样. 只要后台随便一个修改的操作,整个缓存就都没了!用的都是$smarty->clear_all_cache(); 缺点:如果我有10万商品,:),而且都被浏览过,我后台一个操作就要清楚15万多缓存文件:)似乎极限了点 只是举例!!,希望ECSHOP更加完美而已!
smarty里面不是有这个函数么? clear_cache(),我小修改了下,增加了可以指定删除某个目录下的缓存,用处是:可方便的删除商品的分类缓存!
2.0.5上我是这么改的,另外在根目录建立一个缓存目录templates_caches,里面建立article,article_cat,goods,goods_cat,4个文件夹分别放文章内容,文章列表,商品内容,商品列表的缓存 例子:对商品,文章部分的修改 前台init.php和后台init.php加入如下代码,我为了方便直接加在config.php里面了
- //缓存目录设置
- define(‘ECS_ROOT‘, substr(dirname(__FILE__), 0, -8));//前后台数字当然不一样了:)
- //文章缓存
- $cache_dir_article = ECS_ROOT.‘./templates_caches/article‘;
- $cache_dir_article_cat = ECS_ROOT.‘./templates_caches/article_cat‘;
- //商品缓存
- $cache_dir_goods = ECS_ROOT.‘./templates_caches/goods‘;
- $cache_dir_goods_cat = ECS_ROOT.‘./templates_caches/goods_cat‘;
复制代码
前台商品内容和分类缓存时间单独设置长一些,如内容一个月,分类1天 修改后台,商品单独修改的地方只删除这个商品内容的缓存 只要有修改操作就删除商品分类缓存和首页缓存!加入如下 $smarty->clear_cache(null, null, null, null, $cache_dir_goods_cat);//zouql:删除商品目录缓存,默认缓存时间 $smarty->clear_cache(‘goods.html‘, $goods_id, null, null, $cache_dir_goods);//zouql:删除商品缓存,默认缓存时间 还有广告管理等等等等等等等等地方要改! 前台用户发表评论后自动删除本商品缓存等等..........
function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null, $cache_dir = null) {
if (!isset($cache_dir)) $cache_dir = $this->cache_dir; if (!isset($compile_id)) $compile_id = $this->compile_id;
if (!isset($tpl_file)) $compile_id = null;
$_auto_id = $this->_get_auto_id($cache_id, $compile_id);
if (!empty($this->cache_handler_func)) { return call_user_func_array($this->cache_handler_func, array(‘clear‘, &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time)); } else { $_params = array(‘auto_base‘ => $cache_dir, ‘auto_source‘ => $tpl_file, ‘auto_id‘ => $_auto_id, ‘exp_time‘ => $exp_time); require_once(SMARTY_CORE_DIR . ‘core.rm_auto.php‘); return smarty_core_rm_auto($_params, $this); }
} |