- cache.inc.php:
-
- class Cache {
- /**
- * $dir : 快取檔案存放目錄
- * $lifetime : 快取檔案有效期限,單位為秒
- * $cacheid : 快取檔案路徑,包含檔案名稱
- * $ext : 快取檔案副檔名(可以不用),這裡使用是為了查看文件方便
- */
- class Cache {
- /**
- * 析構函數,檢查快取目錄是否有效,預設賦值
- */
- private $dir;
- private $lifetime;
- private $cacheid;
- private $ext;
- /**
- * 檢查快取是否有效
- */
- function __construct($dir='',$ 生命週期=1800) {
- if ($this->dir_isvalid($dir)) {
- $this->dir = $dir;
- $this->lifetime = $lifetime;
- $this ->ext = '.Php';
- $this->cacheid = $this->getcacheid();
- }
- }
- /**
- * 寫入快取
- * $mode == 0 , 以瀏覽器快取的方式取得頁面內容
- * $mode == 1 , 以直接賦值(透過$content參數接收)的方式取得頁面內容
- * $mode == 2 , 以本地讀取(fopen ile_get_contents)的方式取得頁面內容(似乎這種方式沒什麼必要)
- * /
- 私有函數isvalid() {
- if (!file_exists($this->cacheid)) return false;
- if (!(@$mtime = filemtime($this->cacheid)) ) return false;
- if (mktime() - $mtime > $this->lifetime) return false;
- return true;
- }
- /**
- * 載入快取
- * exit() 載入快取後終止原始頁面程式的執行,快取無效則執行原頁面程式產生快取
- * ob_start() 開啟瀏覽器快取用於在頁面結尾處取得頁面內容
- */
- public function write($mode=0, $content='') {
- switch ($mode) {
- case 0:
- $content = ob_get_contents();
- break;
- 預設值:
- break;
- break;
- 預設值:
- break;
- }
- ob_end_flush();
- try {
- file_put_contents($this->cacheid,$content);
- }
- catch (Exception $ e) {
- $this-> error('寫入儲存失敗!請檢查目錄權限!');
- }
- }
- /**
- * 清除快取
- */
- public function load() {
- if ($ this->isvalid()) {
- echo "這是伺服器。; ";
- //以下兩種方式,哪種方式好??????
- require_once($this->cacheid);
- //echo file_get_contents($this->cacheid);
- exit();
- }
- else {
- ob_start();
- }
- }
- /**
- * 取得快取檔案路徑
- */
- public function clean() {
- try {
- unlink($this->cacheid);
- }
- catch (Exception $e) {
- $this->error('清除儲存檔案失敗!請檢查目錄! ');
- }
- }
- /**
- * 檢查目錄是否存在或是否可建立
- */
- private function getcacheid() {
- return $this->dir.md5($this ->geturl( )).$this->ext;
- }
- /**
- * 取得目前頁面完整url
- */
- private function dir_isvalid($dir) {
- if (is_dir($dir) )) return true;
- try {
- mkdir($dir,0777);
- }
- catch (Exception $e) {
- $this->error('所設定儲罐目錄不存在並且建立失敗! 🎜> $url = '';
- if (isset($_SERVER['REQUEST_URI'])) {
- $url = $_SERVER['REQUEST_URI'];
- }
- else {
- $url = $_SERVER['Php_SELF'];
- $url .= 空($_SERVER['QUERY_STRING'])?'':'?'.$_SERVER['QUERY_STRING'] ;
- }
- return $url;
- }
- /**
- * 輸出錯誤訊息
- */
- 解剖函數錯誤($str) {
- echo '
'. $str.' ';
- }
- }
- ?>
-
-
複製程式碼
- demo.php:
-
- /*
- * 자유롭게 복제 및 사용할 수 있습니다. 저작권 정보를 유지하시기 바랍니다. , 이용해 주셔서 감사합니다!
- * 클래스 이름: Cache (For Php5)
- * 버전: 1.0
- * 설명: 동적 캐시 클래스, 페이지를 제어하여 자동으로 캐시 생성, 캐시 호출, 업데이트를 수행하는 데 사용됩니다. 캐시를 삭제하고 캐시를 삭제하세요.
- * 작성자 : jiangjun8528@163.com,Junin
- * 작성자 페이지 : http://blog.csdn.Net/sdts/
- * 최종 수정일 : 2007-8-22
- * 비고:
- 1. 이 버전은 Php5 버전입니다. 아직 Php4 버전을 작성하지 않았습니다. 필요하시면 참고하셔서 직접 수정해 보세요. !).
- 2. 이 버전은 utf-8로 인코딩되어 있습니다. 웹사이트에서 다른 인코딩을 사용하는 경우 Windows 시스템의 경우 메모장을 사용하여 열고 저장한 후 해당 인코딩(일반적으로 ANSI)을 선택하세요. .Linux의 경우 해당 편집 소프트웨어 또는 iconv 명령줄을 사용하세요.
- 3. 위의 항목 2를 무시하세요.
- * 캐싱에 대한 몇 가지 생각:
- * 동적 캐싱의 근본적인 차이점 정적 캐싱은 사용자가 페이지에 액세스하는 과정이 캐시를 생성하고, 캐시를 탐색하고, 업데이트하는 과정이라는 것입니다.
- * 정적 캐싱은 정적 페이지를 생성하는 것을 말합니다. 작업은 일반적으로 웹사이트 백그라운드에서 완료되며 수동 작업(즉, 수동 생성)이 필요합니다.
- */
- /*
- * 사용 예
- ------ --------------------------데모1--- ------- -------
- require_once('cache .inc.php');
- $cachedir = './Cache/'; //캐시 디렉토리 설정
- $cache = new Cache($cachedir,10); //매개변수를 생략하고 기본 설정을 사용합니다. $cache = new Cache($cachedir);
- if ($_GET[ 'cacheact'] != 'rewrite') //여기 트릭이 있습니다. xx.Php?cacheact=rewrite를 통해 캐시를 업데이트하면 비유적으로 다른 작업도 설정할 수 있습니다.
- $cache-> load(); //캐시를 로드합니다. 캐시가 유효하면 다음 페이지 코드는 실행되지 않습니다.
- //페이지 코드가 시작됩니다.
- echo date('H :i:s jS F');
- //페이지 끝 코드
- $cache->write(); //첫 번째 실행 또는 캐시 만료, 캐시 생성
-
- ------ -------- --------------------------데모2------ ----- ------
-
- require_once('cache.inc.php');
- $cachedir = './Cache/'; /캐시 디렉토리 설정
- $cache = new Cache($cachedir,10); //매개변수를 생략하고 기본 설정을 사용합니다. $cache = new Cache($cachedir);
- if ($_GET[' 캐시액트'] != 'rewrite') //여기 트릭이 있습니다. xx.Php?cacheact=rewrite를 통해 캐시를 업데이트하는 등 다른 작업도 설정할 수 있습니다.
- $cache- >load() ; //캐시를 로드합니다. 캐시가 유효하면 다음 페이지 코드는 실행되지 않습니다.
- //페이지 코드가 시작됩니다.
- $content = date('H:i:s jS F');
- echo $content;
- //페이지 코드 끝
- $cache->write(1,$content) //첫 번째 실행 또는 캐시 만료, 캐시 생성
-
- --- ---- ------데모3------------- --- -----------------------
-
- require_once('cache. inc.php');
- 정의('CACHEENABLE',true );
-
- if (CACHEENABLE) {
- $cachedir = './Cache/'; //캐시 디렉토리 설정
- $cache = new Cache($cachedir,10); //생략됨 매개변수는 기본 설정 $cache = new Cache($cachedir);
- if ($_GET['cacheact'] != 'rewrite' ) //이것은 xx.Php?cacheact= rewrite를 통해 캐시를 업데이트하는 등의 방법입니다.
- $cache->load() //캐시를 로드합니다. 캐시가 유효하면 다음 페이지 코드는 실행되지 않습니다.
- }
- //페이지 코드 시작
- $content = date('H:i:s jS F');
- echo $content ;
- //페이지 끝 코드
- if (CACHEENABLE)
- $cache-> ;write(1,$content) //첫 번째 실행 또는 캐시 만료, 캐시 생성
- */
- ?>
코드 복사
|