`
hudeyong926
  • 浏览: 2028452 次
  • 来自: 武汉
社区版块
存档分类
最新评论

2PHP页面缓存

阅读更多
<?php
/*
* 缓存类 cache
* 作    者:多菜鸟
* 联系邮箱:kingerq AT msn DOT com
* 创建时间:2006-05-05
* 实    例:
include( "cache.php" );
 
$cache = new cache(30);
$cache->cacheCheck();

echo date("Y-m-d H:i:s");

//$cache->clearCache('mv_moves.php');
$cache->caching();
*/
class cache {
  //缓存目录
  var $cacheRoot        = "./cache/";
  //缓存更新时间秒数,0为不缓存
  var $cacheLimitTime   = 0;
  //缓存文件名
  var $cacheFileName    = "";
  //缓存扩展名
  var $cacheFileExt     = "php";
 
  /*
   * 构造函数
   * int $cacheLimitTime 缓存更新时间
   */
  function cache( $cacheLimitTime ) {
    if( intval( $cacheLimitTime ) )
      $this->cacheLimitTime = $cacheLimitTime;
    $this->cacheFileName = $this->getCacheFileName();
    ob_start();
  }
 
  /*
   * 检查缓存文件是否在设置更新时间之内
   * 返回:如果在更新时间之内则返回文件内容,反之则返回失败
   */
  function cacheCheck(){
    if( file_exists( $this->cacheFileName ) ) {
      $cTime = $this->getFileCreateTime( $this->cacheFileName );
      if( $cTime + $this->cacheLimitTime > time() ) {
        echo file_get_contents( $this->cacheFileName );
        ob_end_flush();
        exit;
      }
    }
    return false;
  }
 
  /*
   * 缓存文件或者输出静态
   * string $staticFileName 静态文件名(含相对路径)
   */
  function caching( $staticFileName = "" ){
    if( $this->cacheFileName ) {
      $cacheContent = ob_get_contents();
      //echo $cacheContent;
      ob_end_flush();
 
      if( $staticFileName ) {
          $this->saveFile( $staticFileName, $cacheContent );
      }
 
      if( $this->cacheLimitTime )
        $this->saveFile( $this->cacheFileName, $cacheContent );
    }
  }
 
  /*
   * 清除缓存文件
   * string $fileName 指定文件名(含函数)或者all(全部)
   * 返回:清除成功返回true,反之返回false
   */
  function clearCache( $fileName = "all" ) {
    if( $fileName != "all" ) {
      $fileName = $this->cacheRoot . strtoupper(md5($fileName)).".".$this->cacheFileExt;
      if( file_exists( $fileName ) ) {
        return @unlink( $fileName );
      }else return false;
    }
    if ( is_dir( $this->cacheRoot ) ) {
      if ( $dir = @opendir( $this->cacheRoot ) ) {
        while ( $file = @readdir( $dir ) ) {
          $check = is_dir( $file );
          if ( !$check )
          @unlink( $this->cacheRoot . $file );
        }
        @closedir( $dir );
        return true;
      }else{
        return false;
      }
    }else{
      return false;
    }
  }
 
  /*
   * 根据当前动态文件生成缓存文件名
   */
  function getCacheFileName() {
    return  $this->cacheRoot . strtoupper(md5($_SERVER["REQUEST_URI"])).".".$this->cacheFileExt;
  }
 
  /*
   * 缓存文件建立时间
   * string $fileName   缓存文件名(含相对路径)
   * 返回:文件生成时间秒数,文件不存在返回0
   */
  function getFileCreateTime( $fileName ) {
    if( ! trim($fileName) ) return 0;
 
    if( file_exists( $fileName ) ) {
      return intval(filemtime( $fileName ));
    }else return 0;
  }
 
  /*
   * 保存文件
   * string $fileName  文件名(含相对路径)
   * string $text      文件内容
   * 返回:成功返回ture,失败返回false
   */
  function saveFile($fileName, $text) {
    if( ! $fileName || ! $text ) return false;
 
    if( $this->makeDir( dirname( $fileName ) ) ) {
      if( $fp = fopen( $fileName, "w" ) ) {
        if( @fwrite( $fp, $text ) ) {
          fclose($fp);
          return true;
        }else {
          fclose($fp);
          return false;
        }
      }
    }
    return false;
  }
 
  /*
   * 连续建目录
   * string $dir 目录字符串
   * int $mode   权限数字
   * 返回:顺利创建或者全部已建返回true,其它方式返回false
   */
  function makeDir( $dir, $mode = "0777" ) {
    if( ! $dir ) return 0;
    $dir = str_replace( "\\", "/", $dir );
    
    $mdir = "";
    foreach( explode( "/", $dir ) as $val ) {
      $mdir .= $val."/";
      if( $val == ".." || $val == "." || trim( $val ) == "" ) continue;
      
      if( ! file_exists( $mdir ) ) {
        if(!@mkdir( $mdir, $mode )){
         return false;
        }
      }
    }
    return true;
  }
}
?>
分享到:
评论

相关推荐

    PHP禁止缓存如何禁止页面缓存

    2. **页面缓存**:特定于Web应用,指将网页内容的副本保存在客户端(如浏览器),以便下次访问时更快地加载页面。 3. **HTTP头部**:HTTP协议中的请求和响应都包含头部信息,用于传输额外的信息,例如内容类型、编码...

    php文件页面缓存类.zip

    在PHP编程中,缓存是一种优化网站性能的重要技术,它能减少服务器的负载,提高页面加载速度,尤其在处理大量数据库查询或者复杂计算时效果显著。本篇文章将深入探讨PHP中的文件缓存类,以及如何利用它来实现高效的...

    PHP 缓存 PHP 缓存

    2. **页面缓存:**页面缓存技术可以将整个网页或其部分静态化,从而减少每次请求时的动态生成过程,显著提升页面加载速度。 3. **浏览器缓存:**浏览器缓存主要用于存储用户经常访问的网页资源,如图片、样式表和...

    php实现网页缓存的工具类.zip

    php实现网页缓存的工具类的代码及使用方法,非常的实用。 php程序在抵抗大流量访问的时候动态网站往往都是难以招架,所以要引入缓存机制,一般情况下有两种类型缓存 一、文件缓存 二...

    php缓存技术总结

    服务器通过配置可以缓存特定的网页内容,提高响应速度。当网站外接cache或squid服务器进行Web加速时,需要激活Apache的mod_cache模块,并进行相应的配置。 七、APC缓存扩展 APC(Alternative PHP Cache)是PHP的...

    PHP+Redis 实例 页面缓存

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal...

    详解php缓存技术用于开发网站

    2. **缓存组设置**:根据不同类型的页面或数据设置不同的缓存组,便于管理和控制。 3. **静态缓存**:对于高流量的网站,动态缓存可能不足以应对大量请求,此时需实现静态缓存,即将页面完全转换为静态HTML文件,...

    redis页面缓存html使用redis实现页面缓存.docx

    使用 Redis 实现页面缓存 本文档主要介绍了使用 Redis 实现页面缓存的方法,包括缓存 key 的设计、缓存实现的思路和代码实现。 页面缓存的目的:页面缓存的主要目的是为了提高网站的访问速度和用户体验。通过将...

    PHP 缓存详情机制

    浏览器会在下次访问同一页面时尝试使用缓存中的数据,从而减少网络请求,加快页面加载速度。 #### 三、PHP缓存控制函数详解 在PHP中,有一些内置函数可以帮助开发者更好地控制缓存行为。下面我们逐一介绍这些函数...

    php页面缓存方法小结

    PHP页面缓存方法是针对Web开发中常见性能问题提出的一种优化策略,它可以显著减少数据库查询和服务器处理时间,从而加快页面响应速度。该技术适用于对同一页面内容的访问频率较高,且内容不经常变动的场景。在PHP中...

    PHP查询缓存.doc

    1. **性能提升**:通过避免重复的数据库连接、查询和解析过程,缓存可以显著减少脚本执行时间,提高页面加载速度。 2. **资源节省**:减少数据库服务器的压力,降低网络延迟,尤其是当数据库不在本地或需要远程访问...

    PHP缓存与静态化——PHP缓存与静态化

    在构建高性能的Web应用时,PHP缓存与静态化扮演着至关重要的角色。它们能够显著提升网站的响应速度,减少服务器资源的消耗,尤其对于高流量的动态网站来说更是如此。下面将详细探讨这两个概念以及如何在PHP中实现...

    php+redis服务器的缓存类

    - **获取页面内容**:使用Redis获取已缓存的页面内容,或者在没有缓存时执行实际的PHP页面生成过程。 - **浏览器缓存**:虽然这里提到的主要是服务器端缓存,但类可能也考虑了HTTP头来控制客户端的浏览器缓存,如...

    php运行时缓存ObjectCache

    在PHP编程中,运行时缓存是一种优化技术,用于提高应用程序的性能,特别是对于那些频繁执行数据库查询或计算密集型任务的应用程序。ObjectCache,源自WordPress,是PHP中实现的一种对象缓存机制,旨在减少对数据库的...

    php缓存技术

    PHP缓存技术是提高Web应用程序性能的关键策略,它能够减少数据库查询、降低服务器负载并加快页面加载速度。本文将深入探讨PHP缓存的原理、重要性以及如何利用Redis这一高效缓存工具进行优化。 首先,我们需要理解...

    php缓存实现原理

    例如,通过`ob_start()`开启缓冲区,将整个PHP页面的输出保存到变量中,然后使用`ob_get_contents()`获取缓冲区的内容,最后写入到HTML文件。这样,后续的访问可以直接读取生成的静态HTML,避免了每次请求都执行PHP...

    php缓存生成html类

    在实际应用中,你可以在每个需要缓存的PHP页面开始处调用 `HtmlCache::startCache()`,在结束处调用 `HtmlCache::endCache('unique_filename')`,其中 'unique_filename' 应该是能够唯一标识这个页面的字符串,例如...

Global site tag (gtag.js) - Google Analytics