如果你的网站mysql数据库的速度比较慢,你就需要看重网站的缓存了。用过 wordpress 的朋友都知道,它有一个插件叫 wp super cache, 可以将 wordpress 的页面在第一次生成时储存成静态页面,当再次请求这个页面时,就省去了读取数据库的时间。这里讨论的就是这种技术。
第一个问题就是怎样获取 PHP 输出的内容了。获取输出内容的原因很简单,因为我们可以把输出的内容储存起来,当访客再次光临的时候就把事先存好的内容给他。
实现这些目的其实也同样简单。我们只要把函数 ob_start() 在内容输出前调用,然后在所有内容输出完成后调用 ob_get_contents() 获取输出的内容,再在此后调用 ob_end_flush() 表示结束就可以了,一个简单的例子如下:
在 PHP 标签之外的输出可以被记录。
我被记录了。立即学习“PHP免费学习笔记(深入)”;
' ?>
程序运行结果:
在 PHP 标签之外的输出可以被记录。 我被记录了。 在 PHP 标签之外的输出可以被记录。 我被记录了。
可见,$cache变量保存了之前的输出结果。就是说,我们可以通过cache来减少PHP的结果输出。
[PHP房产程序|BBWPS]功能介绍 1、5种信息类别发布:出租、求租、出售、求购、楼盘信息,支持会员发布信息审核; 2、灵活的信息参数设置; 3、充足的信息字段; 4、简单易用的发布/编辑功能,支持配图上传; 5、灵活的信息管理功能; 6、信息输出伪静态,方便搜索引擎抓取数据; 7、支持RSS输出; 8、内置数据高速缓冲技术,可灵活设置缓冲功能是否启动及过期时间; 9、支持 Google 地图
有时我们有这样的习惯,对于管理员是不启用缓存的,而对游客则启用缓存。这个时候,其实实现起来也比较简单。我们可以自己编写两个函数 cache($id) 和 end_cache($id),分别表示缓存开始和缓存结束,然后代码如下(这里有三个函数省略了):
有的时候,站点可能会根据需要,建立了专门为移动设备设计的页面。那么,这种情况下我们就应该将 $id 扩展一下。这种扩展有很多种方法,比如添加另一个参数,将移动设备的页面存在不同于桌面设备的文件夹中,而这些页面使用相同的 $id . 另外还有一种做法,就是将原来的 $id 与移动设备的 User-agent 糅合在一起,md5() 一下就可以了。我偏向于前面那种做法。当然肯定还有其它类似的做法,总之中心思想就是把缓存的标记 ($id) 设置成不一样的东西,并且当用户回来后还能区别得出它们,就可以了。
还有的时候,一个网站有多种用户角色,可能要给相应的用户相应的缓存。当然,只需遵循上面的原则。
ob_start() 和 ob_end_flush() 是递归处理的。也就是说,可以在调用 ob_end_flush() 之前,调用若干次 ob_start() . 例如:
'; ob_start(); echo 'content2'.'
'; $output1 = ob_get_contents(); echo $output1.'
'; ob_end_flush(); $output2 = ob_get_contents(); echo $output2.'
'; ob_end_flush(); ?>
程序运行结果:
content1 content2 content2 content1 content2 content2
$output2 缓存前面的三次输出。










