2PHP页面缓存

Java代码  2PHP页面缓存
  1. <?php  
  2. /* 
  3. * 缓存类 cache 
  4. * 作    者:多菜鸟 
  5. * 联系邮箱:kingerq AT msn DOT com 
  6. * 创建时间:2006-05-05 
  7. * 实    例: 
  8. include( "cache.php" ); 
  9.   
  10. $cache = new cache(30); 
  11. $cache->cacheCheck(); 
  12.  
  13. echo date("Y-m-d H:i:s"); 
  14.  
  15. //$cache->clearCache('mv_moves.php'); 
  16. $cache->caching(); 
  17. */  
  18. class cache {  
  19.   //缓存目录  
  20.   var $cacheRoot        = "./cache/";  
  21.   //缓存更新时间秒数,0为不缓存  
  22.   var $cacheLimitTime   = 0;  
  23.   //缓存文件名  
  24.   var $cacheFileName    = "";  
  25.   //缓存扩展名  
  26.   var $cacheFileExt     = "php";  
  27.    
  28.   /* 
  29.    * 构造函数 
  30.    * int $cacheLimitTime 缓存更新时间 
  31.    */  
  32.   function cache( $cacheLimitTime ) {  
  33.     if( intval( $cacheLimitTime ) )  
  34.       $this->cacheLimitTime = $cacheLimitTime;  
  35.     $this->cacheFileName = $this->getCacheFileName();  
  36.     ob_start();  
  37.   }  
  38.    
  39.   /* 
  40.    * 检查缓存文件是否在设置更新时间之内 
  41.    * 返回:如果在更新时间之内则返回文件内容,反之则返回失败 
  42.    */  
  43.   function cacheCheck(){  
  44.     if( file_exists( $this->cacheFileName ) ) {  
  45.       $cTime = $this->getFileCreateTime( $this->cacheFileName );  
  46.       if( $cTime + $this->cacheLimitTime > time() ) {  
  47.         echo file_get_contents( $this->cacheFileName );  
  48.         ob_end_flush();  
  49.         exit;  
  50.       }  
  51.     }  
  52.     return false;  
  53.   }  
  54.    
  55.   /* 
  56.    * 缓存文件或者输出静态 
  57.    * string $staticFileName 静态文件名(含相对路径) 
  58.    */  
  59.   function caching( $staticFileName = "" ){  
  60.     if( $this->cacheFileName ) {  
  61.       $cacheContent = ob_get_contents();  
  62.       //echo $cacheContent;  
  63.       ob_end_flush();  
  64.    
  65.       if( $staticFileName ) {  
  66.           $this->saveFile( $staticFileName, $cacheContent );  
  67.       }  
  68.    
  69.       if( $this->cacheLimitTime )  
  70.         $this->saveFile( $this->cacheFileName, $cacheContent );  
  71.     }  
  72.   }  
  73.    
  74.   /* 
  75.    * 清除缓存文件 
  76.    * string $fileName 指定文件名(含函数)或者all(全部) 
  77.    * 返回:清除成功返回true,反之返回false 
  78.    */  
  79.   function clearCache( $fileName = "all" ) {  
  80.     if( $fileName != "all" ) {  
  81.       $fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;  
  82.       if( file_exists( $fileName ) ) {  
  83.         return @unlink( $fileName );  
  84.       }else return false;  
  85.     }  
  86.     if ( is_dir( $this->cacheRoot ) ) {  
  87.       if ( $dir = @opendir( $this->cacheRoot ) ) {  
  88.         while ( $file = @readdir( $dir ) ) {  
  89.           $check = is_dir( $file );  
  90.           if ( !$check )  
  91.           @unlink( $this->cacheRoot . $file );  
  92.         }  
  93.         @closedir( $dir );  
  94.         return true;  
  95.       }else{  
  96.         return false;  
  97.       }  
  98.     }else{  
  99.       return false;  
  100.     }  
  101.   }  
  102.    
  103.   /* 
  104.    * 根据当前动态文件生成缓存文件名 
  105.    */  
  106.   function getCacheFileName() {  
  107.     return  $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;  
  108.   }  
  109.    
  110.   /* 
  111.    * 缓存文件建立时间 
  112.    * string $fileName   缓存文件名(含相对路径) 
  113.    * 返回:文件生成时间秒数,文件不存在返回0 
  114.    */  
  115.   function getFileCreateTime( $fileName ) {  
  116.     if( ! trim($fileName) ) return 0;  
  117.    
  118.     if( file_exists( $fileName ) ) {  
  119.       return intval(filemtime( $fileName ));  
  120.     }else return 0;  
  121.   }  
  122.    
  123.   /* 
  124.    * 保存文件 
  125.    * string $fileName  文件名(含相对路径) 
  126.    * string $text      文件内容 
  127.    * 返回:成功返回ture,失败返回false 
  128.    */  
  129.   function saveFile($fileName, $text) {  
  130.     if( ! $fileName || ! $text ) return false;  
  131.    
  132.     if( $this->makeDir( dirname( $fileName ) ) ) {  
  133.       if( $fp = fopen( $fileName, "w" ) ) {  
  134.         if@fwrite( $fp, $text ) ) {  
  135.           fclose($fp);  
  136.           return true;  
  137.         }else {  
  138.           fclose($fp);  
  139.           return false;  
  140.         }  
  141.       }  
  142.     }  
  143.     return false;  
  144.   }  
  145.    
  146.   /* 
  147.    * 连续建目录 
  148.    * string $dir 目录字符串 
  149.    * int $mode   权限数字 
  150.    * 返回:顺利创建或者全部已建返回true,其它方式返回false 
  151.    */  
  152.   function makeDir( $dir, $mode = "0777" ) {  
  153.     if( ! $dir ) return 0;  
  154.     $dir = str_replace( "\\", "/", $dir );  
  155.       
  156.     $mdir = "";  
  157.     foreach( explode( "/", $dir ) as $val ) {  
  158.       $mdir .= $val."/";  
  159.       if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;  
  160.         
  161.       if( ! file_exists( $mdir ) ) {  
  162.         if(!@mkdir( $mdir, $mode )){  
  163.          return false;  
  164.         }  
  165.       }  
  166.     }  
  167.     return true;  
  168.   }  
  169. }  
  170. ?>  
上一篇:ASP.NET性能优化之分布式Session


下一篇:让页面不缓存js