1、擴展數據緩存的必要性
大家都知道ecshop系統使用的是靜態模板緩存,在后台可以設置靜態模板的緩存時間,只要緩存不過期,用戶訪問頁面就相當於訪問靜態頁面,速度可想而知,看似非常完美,但是ecshop 有一個方法被濫用了,那就是 clear_cache_files() ,該方法會把整個系統的靜態模板都清除掉,商家或者系統后台管理員只要在后台修改一下商品,或者修改個其他的東西,就會調用該方法將所有靜態緩存都清掉,所以如果有商家頻繁的修改商品,那么靜態模板緩存其實是形同虛設,系統每次都會重新執行動態程序,對數據庫也會產生較大的壓力,那么就有必要將一些數據更新要求不高的數據緩存下來
2、擴展方式:
/include/lib_base.php 直接添加如下3個方法
/**
* 寫入數據緩存
*
* @param string $key 數據文件的名稱
* @param mix $value 緩存數據
* @param string $expire 過期時間,如果不傳,怎永久有效
* @param integer $type 緩存類型: 0-文件緩存 后期可擴展其他緩存
*/
function write_data_cache($key, $value, $expire=null, $type=0) {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
return $res = $obj_filecache->set($key, $value, $expire);
}
/**
* 讀取數據緩存
*
* @param string $key 數據文件的名稱
* @param mix $value 緩存數據
* @param integer $type 緩存類型: 0-文件緩存 后期可擴展其他緩存
*/
function read_data_cache($key) {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
return $data = $obj_filecache->get($key);
}
/**
* 清除數據緩存
*
* @param string $key 數據文件的名稱
*/
function clear_data_cache($key = '') {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
if($key) {
$res = $obj_filecache->rm($key);
} else {
// 沒有key 則刪除全部緩存
$cache_path = $obj_filecache->cache_path;
$res = del_dir($cache_path);
}
return $res;
}
在需要用到的地方直接調用相應方法即可
2017-11-26 17:42:48 By BJR
