background image

 

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()函数中进

 

行)就能判断缓存是否过期了。
代码如下: