页面缓存

YY框架的页面缓存分为常规缓存、基于时间的缓存和基于库表变动的缓存三类。

常规缓存

这是一种基于Web服务器的缓存模式,缓存文件一旦生成再次访问此URL时Web服务器将不会再把请求分发到PHP解释器处理,而是直接将缓存文件输出。 这是一种极其高效的缓存模式,缺点是缓存一旦生成后需要另外有进程更新和维护缓存。这种缓存适用于文章管理系统或新闻博客系统等静态展示较多的系统

注意: 需要进行常规缓存的URL页面请求我们建议以.htm作为请求后缀,而不是普通的.html作为后缀结尾。

假定url请求为:http://www.yyuc.net/demo/hello.htm。

首先创建控制器 controller/demo/hello.php 和视图文件 view/default/demo/hello.html

控制器内容为:

//设为常规缓存
page::cache_normal();
$time = date('Y-m-d H:i:s');

视图内容为:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>缓存测试</title>
</head>
<body>
<h1>{$time}</h1>
</body>
</html>

访问页面 http://www.yyuc.net/demo/hello.htm你会看到缓存输出的结果。

特别提醒:

1、所有页面缓存只有在生产模式下才能开启,所以请将配置文件中的$is_developing设置为false

2、页面缓存只缓存不带号传参的缓存数据。如news-2-a_3.htm可以被缓存,而new.htm?a=2&p=3是不能被缓存的。

3、因为是网络服务器直取数据而不经过php解释器所以常规缓存是不支持国际化的,也就是说常规缓存一旦形成其页面语言不会改变。所以常规缓存只建议在单语言系统中使用。

基于时间的缓存

基于时间的缓存,顾名思义设置缓存的更新时间,一段时间之后缓存自动失效新的缓存将生成,这类缓存通常适用于门户网站的主页。

将上例中的控制器改为

//基于时间的缓存
page::cache_time(0.001);
$time = date('Y-m-d H:i:s');

访问页面 http://www.yyuc.net/demo/hello.html你会看到缓存输出的结果。

提醒:cache_time方法传入值单位是小时,所以此处传入0.001即为3.6秒。

基于库表变动的缓存

YY框架内部有检测库表更新状态的回调函数,一旦数据库的某张表涉及到了CUD(插入、更新、删除)操作,那么这张表所对应的某些页面缓存也会被更新。

将上例中的控制器改为

//设为库表变动缓存
page::cache_dbs('news','users');
$time = date('Y-m-d H:i:s');

访问页面 http://www.yyuc.net/demo/hello.html你会看到缓存输出的结果。

一旦news或者是users中的某一张表发生变化缓存就将被更新。