功能很简单,就是缓存整个页面,可以设定缓存时间,可以缓存特定的URL,例如:test.php?id=12,当目标文件更新时,如test.php,缓存文件也会更新,即使仍处于缓存期内。
PHP代码
- class cache
- {
- var $cache_dir = ‘./cache/’;//This is the directory where the cache files will be stored;
- var $cache_time = 120;//How much time will keep the cache files in seconds.
- var $caching = false;
- var $file = ”;
- function cache()
- {
- //Constructor of the class
- $this->file = $this->cache_dir . urlencode( $_SERVER[‘REQUEST_URI’] );
- if(file_exists($this->file)) $expired = $this->check_expire();
- else $expired = false;
- if ( file_exists ( $this->file ) && ( filemtime ( $this->file ) + $this->cache_time ) > time() && !$expired )
- {
- //Grab the cache:
- $handle = fopen( $this->file , "r");
- do {
- $data = fread($handle, 8192);
- if (strlen($data) == 0) {
- break;
- }
- echo $data;
- } while (true);
- fclose($handle);
- exit();
- }
- else
- {
- //create cache :
- $this->caching = true;
- ob_start();
- $now = time();
- echo "<!–last modified:".$now."–>\n";
- }
- }
- function close()
- {
- //You should have this at the end of each page
- if ( $this->caching )
- {
- //You were caching the contents so display them, and write the cache file
- $data = ob_get_clean();
- echo $data;
- $fp = fopen( $this->file , ‘w’ );
- fwrite ( $fp , $data );
- fclose ( $fp );
- }
- }
- function check_expire(){
- $fp = fopen($this->file,"r");
- preg_match("/\:([\d]+)\-/",fread($fp,200),$time);
- $modify_time = $time[1];
- if($modify_time<filemtime($_SERVER[‘SCRIPT_FILENAME’])){
- return true;
- }
- else{
- return false;
- }
- }
- }
用法:
PHP代码
- //Example :
- $ch = new cache();
- echo date("D M j G:i:s T Y");
- $ch->close();


