网站适用的PHP缓存类

缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。下面是一个写得不错的缓存类,可以参考下缓存的机制与写法。

cache.php 代码如下:

[php] view
plaincopy

  1. <?

  2. /*

  3. 用户需要事先定义的常量:

  4. _CachePath_        模板缓存路径

  5. _CacheEnable_        自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制

  6. _ReCacheTime_        自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存

  7. */
  8. class cache

  9. {

  10. var $cachefile;

  11. var $cachefilevar;
  12. function cache()

  13. {

  14. //生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile

  15. //动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同

  16. $s=array(".","/");$r=array("_","");

  17. $this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];

  18. $this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);

  19. }
  20. //删除当前页/模块的缓存

  21. function delete()

  22. {

  23. //删除当前页的缓存

  24. $d = dir(_CachePath_);

  25. $strlen=strlen($this->cachefilevar);

  26. //返回当前页的所有Cache文件组

  27. while (false !== ($entry = $d->read()))

  28. {

  29. if (substr($entry,0,$strlen)==$this->cachefilevar)

  30. {

  31. if (!unlink(_CachePath_."/".$entry)) {echo "Cache目录无法写入";exit;}

  32. }

  33. }

  34. }
  35. //判断是否已Cache过,以及是否需要Cache

  36. function check()

  37. {

  38. //如果设置了缓存更新间隔时间 _ReCacheTime_

  39. if (_ReCacheTime_+0>0)

  40. {

  41. //返回当前页Cache的最后更新时间

  42. $var[email protected](_CachePath_."/".$this->cachefilevar);$var=$var[0];

  43. //如果更新时间超出更新间隔时间则删除Cache文件

  44. if (time()-$var>_ReCacheTime_)

  45. {

  46. $this->delete();$ischage=true;

  47. }

  48. }

  49. //返回当前页的Cache

  50. $file=_CachePath_."/".$this->cachefile;

  51. //判断当前页Cache是否存在 且 Cache功能是否开启

  52. return (file_exists($file) and _CacheEnable_ and !$ischange);

  53. }
  54. //读取Cache

  55. function read()

  56. {

  57. //返回当前页的Cache

  58. $file=_CachePath_."/".$this->cachefile;

  59. //读取Cache文件的内容

  60. if (_CacheEnable_) return readfile($file);

  61. else return false;

  62. }
  63. //生成Cache

  64. function write($output)

  65. {

  66. //返回当前页的Cache

  67. $file=_CachePath_."/".$this->cachefile;

  68. //如果Cache功能开启

  69. if (_CacheEnable_)

  70. {

  71. //把输出的内容写入Cache文件

  72. $fp[email protected]fopen($file,‘w‘);

  73. if ([email protected]fputs($fp,$output)) {echo "模板Cache写入失败";exit;}

  74. @fclose($fp);

  75. //如果设置了缓存更新间隔时间 _ReCacheTime_

  76. if (_ReCacheTime_+0>0)

  77. {

  78. //更新当前页Cache的最后更新时间

  79. $file=_CachePath_."/".$this->cachefilevar;

  80. $fp[email protected]fopen($file,‘w‘);

  81. if ([email protected]($fp,time())) {echo "Cache目录无法写入";exit;}

  82. @fclose($fp);

  83. }

  84. }

  85. }

  86. }

  87. ?>

类的使用:

[php] view
plaincopy

    1. <?php

    2. define("_CachePath_","./cache/");

    3. define("_CacheEnable_","1");

    4. define("_ReCacheTime_","43200");

    5. include(‘cache.php‘);

    6. $cache=new cache();

    7. if ($cache->check())

    8. {

    9. $template=$cache->read();

    10. }

    11. else

    12. {

    13. ob_start();

    14. ob_implicit_flush(0);

    15. ?>

    16. 页面内容昆明男科医院。。。。

    17. <?php

    18. $template = ob_get_contents();

    19. $cache->write($template);

    20. }

    21. ?>

时间: 2024-11-06 09:55:32

网站适用的PHP缓存类的相关文章

比较全面的一个PHP缓存类解析

转自:http://www.blhere.com/1164.html 一.引论 PHP,一门最近几年兴起的web设计脚本语言,由于它的强大和可伸缩性,近几年来得到长足的发展,php相比传统的asp网站,在速度上有绝对的优势,想mssql转6万条数据php如需要40秒,asp不下2分钟.但是,由于网站的数据越来越多,我们渴求能更快速的调用数据,不必要每次都从数据库掉,我们可以从其他的地方,比方一个文件,或者某个内存地址,这就是php的缓存技术,也就是Cache技术. 二.分析深入 一般来说,缓存的

缓存类

1 /// <summary> 2 /// .net自带缓存类 3 /// </summary> 4 public class Cache : Interface.ICache 5 { 6 public static object LockObject = new object(); 7 private System.Web.Caching.Cache cache = HttpContext.Current.Cache; 8 /// <summary> 9 /// 插入

iOS缓存类的设计

使用执行速度缓存的程序可以大大提高程序,设计一个简单的缓存类并不需要太复杂的逻辑. 只需要一个简单的3接口. 存款对象 以一个对象 删除对象 阅读对象 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXh5aGVhdmVu/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > 读取对象的时候先读内存 内存没有就读文件 保存对象 保存对象的时候前台

关于大型网站技术演进的思考(十二)--网站静态化处理—缓存(4)

上篇我补充了下SSI的知识,SSI是一个十分常见的技术,记得多年前我看到很多门户网站页面的后缀是.shtml,那么这就说明很多门户网站都曾经使用过SSI技术,其实现在搜狐网站也还在用shtml,如下图所示: 由此可见SSI在互联网的应用还是非常广泛的.其实互联网很多网页如果我们按照动静分离策略拆分,绝大部分都是可以当做静态资源处理,例如新闻网站,文学网站,这些网页生成后,大部分的资源都是不变的,说白了这些网页本质就是一个静态页面,我们开发他们时候也不需要服务端的参入,每一个网站都有自己固定的板式

Java缓存类的实际应用场景

不要着迷于技术,应把注意力放到问题上. 一个普通的后台管理系统,一定会有参数配置.参数配置数据表和其他的数据表是不同的,它的操作基本都是查的操作.参数配置的这些数据信息是贯穿在整个项目中,那么把他们放到哪里可以方便类或者jsp的调用? spring的配置文件有支持缓存类,它的配置如下: <!-- 启用用户的缓存功能 --> <bean id="userCache" class="org.springframework.security.core.userde

【cocos2d-x游戏开发】cocos中的三种缓存类

Cocos中有三种缓存类: (1):纹理缓存:TextureCache (2):精灵帧缓存:SpriteFrameCache (3):动画缓存:AnimationCache 游戏最要重要的就是流畅度,如果我们的游戏经常因为加载资源出现卡顿的情况,那么这个游戏就没有很好地游戏体验.所以,为了解决这个问题,缓存就应运而生了. 缓存的目的就是:现将所需资源加载到内存中,之后再次使用该资源的时候,就可以直接从内存中读出,而不需要重新加载,从而减少了CPU和GPU的内存占用. TextureCache 在

高性能网站架构设计之缓存篇(3)- Redis的配置

我们说Redis是一个强大的Key-Value存储系统,在前面我们已遇到了两个问题: 1.redis server 启动后,独占进程,能不能修改为后台服务呢? 2.redis server 服务是单线程的,而我的机器是多核的,能不能在同一台机器上开启多个实例更充分的利用 cpu 资源呢?但6379端口已经被前一个实例绑定,肯定会有冲突,那能不能修改默认端口呢? 答案是肯定的,redis 提供了灵活的配置方式,一种可以通过配置文件来配置,另一种你可以在运行时通过 config set 命令来修改配

cocos2dx[3.2](22)——三种缓存类

[唠叨] Cocos引擎主要有三种缓存类: > 纹理缓存     : TextureCache > 精灵帧缓存 : SpriteFrameCache > 动画缓存     : AnimationCache 缓存的目的就是:先将所需资源(如纹理图片)加载到内存中,之后再次使用该资源的时候,就可以直接从内存中取出,而不需要重新加载.从而减少了CPU和GPU的内存占用. 本文对参考文献的内容进行了整理与整合,并加入一些自己的观点. [致谢] http://www.cocoachina.com/

一个不错的PHP文件页面缓存类

在php中缓存分类数据库缓存,文件缓存和内存缓存,下面我来给各位同学详细介绍PHP文件缓存类实现代码,有需要了解的朋友可参考. 页面缓存类  代码如下 复制代码 <?php    /*    * 缓存类    cache   * 作    者:多菜鸟   * 实    例:   */   /*include( "cache.php" );       $cache = new cache(30);   $cache->cacheCheck();       echo dat