适用情况:
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); } ?>
相关推荐
这可以通过类似输出缓冲技术或其他页面片段缓存技术(例如ESI)实现。ESI技术允许缓存动态内容的部分片段,而这些片段可由服务器动态生成,并与其他缓存片段组合成最终页面。 三、数据缓存 数据缓存是将数据库查询...
Twig Cache Extension 是一个针对PHP中的Twig模板引擎设计的扩展,主要目标是提高应用程序的性能,通过缓存模板的片段来减少不必要的重复渲染。这个库特别适用于那些使用Twig作为视图层,且对页面加载速度有较高要求...
5. **模板片段缓存**:对于网站中不变或变化不大的部分,如头部、底部,可以进行单独缓存。 为了更有效地利用Redis,还可以采用LRU(Least Recently Used)或LFU(Least Frequently Used)等算法来管理缓存空间,当...
这个类库适用于那些使用Twig作为视图层的PHP项目,尤其对于高流量或者资源密集型的应用,缓存功能能够显著提升页面加载速度。 在了解这个扩展之前,我们先简单回顾一下Twig。Twig是一种流行的、安全的PHP模板引擎,...
在Yii框架中,片段缓存是一种针对页面片段进行缓存的机制,它允许开发者缓存页面的某个部分,而不是整个页面。 Yii框架提供了多种缓存组件,例如CFileCache、CDbCache、CMemCache等,其中CFileCache是一个基本的...
2. 片段缓存 片段缓存是指缓存页面中的特定部分,而不是整个页面。在控制器中的action方法里,可以使用$this->renderPartial()方法来渲染视图,并在此过程中实现片段缓存。示例中的actionCache方法展示了如何对一个...
缓存可以应用于不同的级别,包括数据缓存、页面片段缓存和页面缓存。数据缓存是最基础的级别,用于存储单个数据片段,例如变量。页面片段缓存涉及将视图脚本生成的页面片段进行缓存。页面缓存则是将整个页面存储在...
2. PHP文件缓存:文件缓存是将数据序列化后保存在服务器的磁盘文件中。使用时通过读取文件并反序列化数据来恢复数据状态。这种方式简单易实现,适合对性能要求不是特别高的应用场景。在文件缓存中,缓存时间的控制...
WP片段缓存 描述 此插件需要PHP 5.3.6或更高版本,如果没有的,则无法激活。 通过缓存单个页面片段(小部件,菜单输出和长循环)来提高网站性能。 增加了缓存站点的特定部分的功能。 该插件适用于无法使用整页缓存...
2. 如何通过PHP控制浏览器缓存:PHP可以通过设置HTTP头信息控制浏览器对资源文件的缓存行为。 3. 如何通过JavaScript实现图片的动态加载:通过JavaScript动态创建图片元素,并指定图片地址,可以绕过浏览器缓存,...
在PHP编程中,缓存是一种优化网站性能的重要技术,它能够减少服务器的负载,提高页面加载速度,从而提升用户体验。本文将深入探讨一种基于文件系统的简单PHP缓存设计及其实现方式,具体通过比较文件的修改时间和当前...
最后,输出错误信息的方法是error,虽然在提供的内容片段中该方法的具体实现未给出,但我们可以推断,当缓存操作遇到错误时,该方法被调用以通知用户错误信息。 总体来看,通过PHP实现Redis缓存类的使用可以大大...
当展示或获取页面时,可以通过特定的方法来利用缓存效果,如`$smarty->display('template.tpl', $cache_id);`,其中`$cache_id`用于标识不同的缓存实例,确保即使在同一个模板文件的不同请求间也能使用不同的缓存...
攻击者可以在评论中编写 PHP 代码并提交,首个刷新的页面将执行代码片段解析并执行页面上的 PHP 代码。通过禁用动态代码片段可以阻止此问题,但更简单的方法是升级插件。 WP Super Cache: WP Super Cache 是 ...
2. 高性能:Yii2框架采用优化的代码和缓存机制,如页面片段缓存、数据缓存和数据库查询缓存,确保了应用程序的高性能运行。 3. ActiveRecord:Yii2中的ActiveRecord是ORM(对象关系映射)的一种实现,允许开发者用...
第一个代码片段是一个页面缓存机制的实现,它能够帮助开发者在没有CMS或框架支持的情况下提升页面加载速度。第二个代码片段是一个根据经纬度计算距离的函数,适用于地理位置相关应用的开发。最后一个代码片段涉及...
在本文中,我们将探讨如何利用PHP的输出控制函数来优化动态网页的加载速度,特别是通过缓存和压缩页面内容来提升用户体验。首先,我们提到了`mod_gzip`,这是一个Apache模块,它能够对静态HTML页面进行Gzip压缩,...
示例代码片段如下: ```php function loadcsstemplate() { global $_G; if ($_SERVER['REQUEST_URI'] == '/discuz/portal.php') { $scriptcss = '...