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

2PHP页面片段缓存

阅读更多

适用情况:
1.数据相对比较稳定,主要是读取操作。
2.文件操作要比数据库操作快。
3.复杂数据访问,大数据量访问,密集数据访问,系统数据库负载极重。
4.Web/DB分离结构或者多Web单DB结构。

 

缓存在实际使用当中应用很广泛,可以减轻对服务器数据库的访问,提高运行速度。目前很多CMS内容管理系统中频繁使用缓存机制来提高系统运行的效率。

cache.php 代码 如下:

<?  
/* 
用户需要事先定义的常量: 
_CachePath_        模板缓存路径 
_CacheEnable_        自动缓存机制是否开启,未定义或为空,表示关闭自动缓存机制 
_ReCacheTime_        自动重新缓存间隔时间,单位为秒,未定义或为空,表示关闭自动重新缓存 
*/  
  
class cache {  
  
	var $cachefile;  
	var $cachefilevar;  
	  
	function cache() {  
		//生成当前页的Cache组文件名 $this->cachefilevar 及文件名 $this->cachefile  
		//动态页的参数不同对应的Cache文件也不同,但是每一个动态页的所有Cache文件都有相同的文件名,只是扩展名不同  
		$s=array(".","/");$r=array("_","");  
		$this->cachefilevar=str_replace($s,$r,$_SERVER["SCRIPT_NAME"])."_".$_GET[_ActionVar_];  
		$this->cachefile=$this->cachefilevar.".".md5($_SERVER["REQUEST_URI"]);  
	}  
  
	//删除当前页/模块的缓存  
	function delete() {  
		//删除当前页的缓存  
		$d = dir(_CachePath_);  
		$strlen=strlen($this->cachefilevar);  
		//返回当前页的所有Cache文件组  
		while (false !== ($entry = $d->read())){  
			if (substr($entry,0,$strlen)==$this->cachefilevar){  
				if (!unlink(_CachePath_."/".$entry)) {
					echo "Cache目录无法写入";exit;
				}  
			}  
		}  
	}  
  
	//判断是否已Cache过,以及是否需要Cache  
	function check() {  
		//如果设置了缓存更新间隔时间 _ReCacheTime_  
		if (_ReCacheTime_+0>0){  
			//返回当前页Cache的最后更新时间  
			$var=@file(_CachePath_."/".$this->cachefilevar);
			$var=$var[0];  
			//如果更新时间超出更新间隔时间则删除Cache文件  
			if (time()-$var>_ReCacheTime_) {  
				$this->delete();$ischage=true;  
			}  
		}  
		//返回当前页的Cache  
		$file=_CachePath_."/".$this->cachefile;  
	   //判断当前页Cache是否存在 且 Cache功能是否开启  
		return (file_exists($file) and _CacheEnable_ and !$ischange);  
	}  
  
	//读取Cache  
	function read() {  
		//返回当前页的Cache  
		$file=_CachePath_."/".$this->cachefile;  
		//读取Cache文件的内容  
		if (_CacheEnable_) 
			return readfile($file);  
		else 
			return false;  
	}  
  
	//生成Cache  
	function write($output) {  
		//返回当前页的Cache  
		$file=_CachePath_."/".$this->cachefile;  
		//如果Cache功能开启  
		if (_CacheEnable_) {  
			//把输出的内容写入Cache文件  
			$fp=@fopen($file,'w');  
			if (!@fputs($fp,$output)) {
				echo "模板Cache写入失败";exit;
			}  
			@fclose($fp);  
			//如果设置了缓存更新间隔时间 _ReCacheTime_  
			if (_ReCacheTime_+0>0) {  
			   //更新当前页Cache的最后更新时间  
				$file=_CachePath_."/".$this->cachefilevar;  
				$fp=@fopen($file,'w');  
				if (!@fwrite($fp,time())) {
					echo "Cache目录无法写入";exit;
				}  
				@fclose($fp);  
			}  
		}  
	}  
  
}  
?>  

 使用过程:

 

<?php  
	define("_CachePath_","./cache/");  
    define("_CacheEnable_","1");  
    define("_ReCacheTime_","43200");  
    include('cache.php');  
    $cache=new cache();  
    if($cache->check()) {  
        $template=$cache->read();  
    }else{  
		ob_start();  
        ob_implicit_flush(0);  
?>  
 页面内容。。。。  
<?php  
	$template = ob_get_contents();  
        $cache->write($template);  
    }  
?> 
分享到:
评论

相关推荐

    wp-fragment-cache:通过缓存单个页面片段(小部件,菜单输出和长循环)来提高网站性能

    WP片段缓存 描述 此插件需要PHP 5.3.6或更高版本,如果没有的,则无法激活。 通过缓存单个页面片段(小部件,菜单输出和长循环)来提高网站性能。 增加了缓存站点的特定部分的功能。 该插件适用于无法使用整页缓存...

    WordPress缓存插件(WP Super Cache和W3 Total Cache).rar

    攻击者可以在评论中编写 PHP 代码并提交,首个刷新的页面将执行代码片段解析并执行页面上的 PHP 代码。通过禁用动态代码片段可以阻止此问题,但更简单的方法是升级插件。 WP Super Cache: WP Super Cache 是 ...

    cache-app:一个显示如何在 Symfony2 应用程序中设置缓存的小应用程序

    s-maxage为 1 分钟(60 秒) 第一次刷新时: 再次调用页面(第一次调用后 60 秒): =&gt; 见提交: : 带有 esi 第一次刷新时: 我们可以看到页面/和片段都有一个陈旧的缓存。 在第二次刷新时(第一次刷新后不到 20 秒...

    超级实用的7个PHP代码片段分享

    1、超级简单的页面缓存 如果你的工程项目不是基于 CMS 系统或框架,打造一个简单的缓存系统将会非常实在。下面的代码很简单,但是对小网站而言能切切实实解决问题。 复制代码 代码如下: &lt;?php // define the path...

    7个超级实用的PHP代码片段

    1、超级简单的页面缓存 如果你的工程项目不是基于 CMS 系统或框架,打造一个简单的缓存系统将会非常实在。下面的代码很简单,但是对小网站而言能切切实实解决问题。 复制代码 代码如下: &lt;?php // define the path...

    yiiframework官方最新版,包括源程序、api、文档

     10、分层缓存方案:Yii支持数据缓存,页面缓存,片段缓存和动态内容。缓存的存储介质,可以轻松地更改而不触及应用程序代码。  11、错误处理和日志记录:错误的处理很好的呈现出来,日志信息可以分类,过滤并分配...

    gmarker:MODX Revo (modx.com) 的插件和片段。 允许使用 Google Maps API 轻松创建地图和标记

    :这是一个实用程序片段,用于对提交的表单进行地理编码或向页面上的其他元素添加地理编码功能。 :这将自动查找包含位置信息(地址、城市、州等)的页面的纬度和经度坐标,并将值存储为页面上的电视。 有关更多...

    Node.js 开发指南.pdf

    5.4.4 片段视图 100 5.4.5 视图助手 100 5.5 建立微博网站 102 5.5.1 功能分析 102 5.5.2 路由规划 102 5.5.3 界面设计 103 5.5.4 使用Bootstrap 104 5.6 用户注册和登录 107 5.6.1 访问数据库 ...

    Node.js+开发指南

    5.4.4 片段视图 100 5.4.5 视图助手 100 5.5 建立微博网站 102 5.5.1 功能分析 102 5.5.2 路由规划 102 5.5.3 界面设计 103 5.5.4 使用Bootstrap 104 5.6 用户注册和登录 107 5.6.1 访问...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    ZendFramework中文文档

    命名片段 7.9.4. 在响应对象中测试异常 7.9.5. 子类化响应对象 7.10. 插件 7.10.1. 简介 7.10.2. 编写插件 7.10.3. 使用插件 7.10.4. 获取和控制插件 7.10.5. 包含在标准发行包中的插件 7.10.5.1. 动作...

Global site tag (gtag.js) - Google Analytics