ecshop二次開發系統緩存優化之擴展數據緩存的必要性與方法

一、擴展數據緩存的必要性php

  你們都知道ecshop系統使用的是靜態模板緩存,在後臺能夠設置靜態模板的緩存時間,只要緩存不過時,用戶訪問頁面就至關於訪問靜態頁面,速度可想而知,看似很是完美,可是ecshop 有一個方法被濫用了,那就是 clear_cache_files() ,該方法會把整個系統的靜態模板都清除掉,商家或者系統後臺管理員只要在後臺修改一下商品,或者修改個其餘的東西,就會調用該方法將全部靜態緩存都清掉,因此若是有商家頻繁的修改商品,那麼靜態模板緩存實際上是形同虛設,系統每次都會從新執行動態程序,對數據庫也會產生較大的壓力,那麼就有必要將一些數據更新要求不高的數據緩存下來數據庫

二、擴展方式:緩存

/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;
}

在須要用到的地方直接調用相應方法便可blog

 

2017-11-26 17:42:48       By BJRget

相關文章
相關標籤/搜索