一、擴展數據緩存的必要性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