discuz快取機制

2021-09-26 07:47:47 字數 1239 閱讀 3922

一、 discuz快取機制分析:

使用快取機制的目的很明顯,降低伺服器效能的消耗,對於常用且變動比較小的資料的資料,可以盡可能的使用快取來解決,代替最原生的不斷的進行資料庫查詢匹配的過程。而discuz中提供的資料快取方式包括記憶體、資料庫、檔案三種方式,具體如下。

(1)、專案根目錄/config/config_global.php配置資料庫/檔案快取方式,當然還有第三種,就是記憶體快取。

$_config['cache']['type'] = 'sql';//file

(2)、快取資料獲取:

根目錄/source/function/function_core.php:

function loadcache($cachenames, $force = false)  } if(!empty($caches))  elseif($cname == 'usergroup_'.$_g['groupid'])  elseif($cname == 'style_default')  elseif($cname == 'grouplevels')  else  } } return true; }

從函式中可以看出,資料快取其實相當於把一些常用的資料,通過特定的需求,根據快取的方式儲存於檔案 或者 表(字首)_common_syscache 或者 記憶體中,當需要使用到某個型別的資料的時候,只需要在**中加入類似loadcache('setting');,就可以獲取到快取資料並賦值於自定義全域性變數$_g中,即$_g['setting']; ,其中fetch_all中會判斷當前使用的是哪一種快取方式,如下該函式:

指令碼:table_common_syscache.php

public function fetch_all($cachenames)  else  } if($this->_isfilecache)  elseif($this->_allowmem)  } if(!$lostcaches)  $cachenames = $lostcaches; unset($lostcaches); } $query = db::query('select * from '.db::table($this->_table).' where '.db::field('cname', $cachenames)); while($syscache = db::fetch($query))  } } foreach($cachenames as $name) { if(

discuz關閉快取

修改 function core.php 檔案 vim discuz x3.2 upload source function function core.php 如下,新增紅色字型 function checktplrefresh maintpl,subtpl,timecompare,templat...

DISCUZ 外掛程式機制

1 參考 2 由第一點中的官方提供的參考庫可以基本可以了解怎麼去開發乙個外掛程式。這裡簡述幾點重要的 一 配置檔案中config global.php中加上 config plugindeveloper 1 就可以在後台 應用 外掛程式 中設計新外掛程式。將上述變數中的值設定成為2,就可以看disc...

IOS 開發快取機制 記憶體快取機制

使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...