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

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);  
    }  
?> 
分享到:
评论

相关推荐

    php缓存技术总结

    这可以通过类似输出缓冲技术或其他页面片段缓存技术(例如ESI)实现。ESI技术允许缓存动态内容的部分片段,而这些片段可由服务器动态生成,并与其他缓存片段组合成最终页面。 三、数据缓存 数据缓存是将数据库查询...

    Twig Cache Extension:用于Twig的模板片段缓存类库

    Twig Cache Extension 是一个针对PHP中的Twig模板引擎设计的扩展,主要目标是提高应用程序的性能,通过缓存模板的片段来减少不必要的重复渲染。这个库特别适用于那些使用Twig作为视图层,且对页面加载速度有较高要求...

    php缓存技术

    5. **模板片段缓存**:对于网站中不变或变化不大的部分,如头部、底部,可以进行单独缓存。 为了更有效地利用Redis,还可以采用LRU(Least Recently Used)或LFU(Least Frequently Used)等算法来管理缓存空间,当...

    Twig Cache Extension:用于Twig的模板片段缓存类库.zip

    这个类库适用于那些使用Twig作为视图层的PHP项目,尤其对于高流量或者资源密集型的应用,缓存功能能够显著提升页面加载速度。 在了解这个扩展之前,我们先简单回顾一下Twig。Twig是一种流行的、安全的PHP模板引擎,...

    Yii开启片段缓存的方法

    在Yii框架中,片段缓存是一种针对页面片段进行缓存的机制,它允许开发者缓存页面的某个部分,而不是整个页面。 Yii框架提供了多种缓存组件,例如CFileCache、CDbCache、CMemCache等,其中CFileCache是一个基本的...

    YII框架页面缓存操作示例

    2. 片段缓存 片段缓存是指缓存页面中的特定部分,而不是整个页面。在控制器中的action方法里,可以使用$this-&gt;renderPartial()方法来渲染视图,并在此过程中实现片段缓存。示例中的actionCache方法展示了如何对一个...

    YII Framework框架教程之缓存用法详解

    缓存可以应用于不同的级别,包括数据缓存、页面片段缓存和页面缓存。数据缓存是最基础的级别,用于存储单个数据片段,例如变量。页面片段缓存涉及将视图脚本生成的页面片段进行缓存。页面缓存则是将整个页面存储在...

    常见php数据文件缓存类汇总

    2. PHP文件缓存:文件缓存是将数据序列化后保存在服务器的磁盘文件中。使用时通过读取文件并反序列化数据来恢复数据状态。这种方式简单易实现,适合对性能要求不是特别高的应用场景。在文件缓存中,缓存时间的控制...

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

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

    php强制更新图片缓存的方法

    2. 如何通过PHP控制浏览器缓存:PHP可以通过设置HTTP头信息控制浏览器对资源文件的缓存行为。 3. 如何通过JavaScript实现图片的动态加载:通过JavaScript动态创建图片元素,并指定图片地址,可以绕过浏览器缓存,...

    简单的PHP缓存设计实现代码

    在PHP编程中,缓存是一种优化网站性能的重要技术,它能够减少服务器的负载,提高页面加载速度,从而提升用户体验。本文将深入探讨一种基于文件系统的简单PHP缓存设计及其实现方式,具体通过比较文件的修改时间和当前...

    php实现的redis缓存类定义与使用方法示例

    最后,输出错误信息的方法是error,虽然在提供的内容片段中该方法的具体实现未给出,但我们可以推断,当缓存操作遇到错误时,该方法被调用以通知用户错误信息。 总体来看,通过PHP实现Redis缓存类的使用可以大大...

    smarty缓存部分参考

    当展示或获取页面时,可以通过特定的方法来利用缓存效果,如`$smarty-&gt;display('template.tpl', $cache_id);`,其中`$cache_id`用于标识不同的缓存实例,确保即使在同一个模板文件的不同请求间也能使用不同的缓存...

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

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

    Yii2一个现代的PHP开发框架为专业的Web开发设计

    2. 高性能:Yii2框架采用优化的代码和缓存机制,如页面片段缓存、数据缓存和数据库查询缓存,确保了应用程序的高性能运行。 3. ActiveRecord:Yii2中的ActiveRecord是ORM(对象关系映射)的一种实现,允许开发者用...

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

    第一个代码片段是一个页面缓存机制的实现,它能够帮助开发者在没有CMS或框架支持的情况下提升页面加载速度。第二个代码片段是一个根据经纬度计算距离的函数,适用于地理位置相关应用的开发。最后一个代码片段涉及...

    控制PHP的输出:缓存并压缩动态页面

    在本文中,我们将探讨如何利用PHP的输出控制函数来优化动态网页的加载速度,特别是通过缓存和压缩页面内容来提升用户体验。首先,我们提到了`mod_gzip`,这是一个Apache模块,它能够对静态HTML页面进行Gzip压缩,...

    discuz x2 不同页面调用不同样式

    示例代码片段如下: ```php function loadcsstemplate() { global $_G; if ($_SERVER['REQUEST_URI'] == '/discuz/portal.php') { $scriptcss = '...

Global site tag (gtag.js) - Google Analytics