PHP 函数:php 页面缓存 ob 系列函数
这几天接触了 phpcms 的页面缓存,有些感触。其好处就不多说了,它一般是用在数据库
查询较多的页面中,对于插入修改删除的页面就不大合适了
这里有缓存技术的简单介绍:
php 页面缓存主要用到的是 ob 系列函数,如 ob_start(),ob_end_flush(),ob_get_contents()
下面是编码部分。
1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定
义。这里用到的识别 ID 是经加密的
$_SERVER
[REQUEST_URI]参数。这个函数中最后还有
一个
if
判断:若未过缓存期,则加载缓存文件,否则加载源文件。
代码如下:
function
page_init()
{
$url
=
$_SERVER
['REQUEST_URI'];
//子 url
,该参数一般是唯一的
$pageid
= md5(
$url
);
$dir
=
str_replace
('/','_',
substr
(
$_SERVER
['SCRIPT_NAME'],1,-4));
//目录命名方式,如 exp_index
if
(!
file_exists
(
$pd
= PAGE_PATH.
$dir
.'/'))@
mkdir
(
$pd
,0777)
or
die
("$pd 目录创建失败");
//如 cache/page/exp_index/
define('PAGE_FILE',
$pd
.
$pageid
.'.html');
//如 cache/page/exp_index/cc8ef22b405566745ed21305dd248f0e.html
$contents
=
file_get_contents
(PAGE_FILE);
//
读出
if
(
$contents
&&
substr
(
$contents
, 13, 10) > time() )
//对应 page_cache()函数中加上的自定义头
部
{
echo
substr
(
$contents
, 27);
exit
(0);
}
return
true;
}
2.页面缓存函数,这里使用到一个技巧:在缓存文件的内容中加上一个头部信息--过期时
间,所以每次只需要对头部中的过期时间和当前时间进行比较(在 page_init()函数中进
行)就能判断缓存是否过期了。
代码如下: