在掏出数据以后把数据缓存在客户端,然后cookie指定一个时候周期,在下次革新时先推断这个cookie时候到期没,假如到期了就从新革新,不然就挪用当地缓存。以下是以 emlog 博客为案例的代码
//载入全局加载项
require_once 'init.php';
//链接数据库
$DB = MySql::getInstance();
/*****************依据前提随机猎取20条文章的GID***************/
$sql = "SELECT * FROM ".DB_PREFIX."blog ORDER BY rand() DESC LIMIT 20";
$list = $DB->query($sql);
while($row = $DB->fetch_array($list)){
$arrgid.= $row['gid'].',';
}
$arrgid = substr($arrgid,0,strlen($arrgid)-1);//去除末了一个逗号
$arr = explode(",",$arrgid);//将猎取的gid以逗号分割为数组
/***********函数,依据文章gid输出文章标题与衔接**************/
function sylist($gid){
$DB = MySql::getInstance();
$sql = "SELECT * FROM ".DB_PREFIX."blog WHERE gid = '{$gid}'";
$list = $DB->query($sql);
while($row = $DB->fetch_array($list)){
return '
'.$row['title'].'';}
}
/***********依据cookie在指定时候内猎取内容**************/
//推断cookie【gid】是不是存在
if (isset($_COOKIE["gid"])){
//推断cookie【date】逾期时候是不是存在
if(isset($_COOKIE["date"])){
echo '逾期时候为:'.date("Y-m-d H:i:s", $_COOKIE["date"]).'
';
//推断时候是不是逾期,当前时候大于cookie【date】中贮存的时候则为逾期
if(time() > $_COOKIE["date"]){
//假如逾期了,从新建立逾期时候
setcookie("date", "", time()-3600);//删除逾期时候
setcookie("date", time()+60*1,time()+3600);//从新建立逾期时候,个中的60*1为一分钟
//革新内容
setcookie("gid", "", time()-3600);//删除逾期内容
setcookie("gid", $arrgid,time()+3600);//从新建立内容
}
//输出内容
$arr = explode(",",$_COOKIE["gid"]);
//轮回输出数组
foreach($arr as $value){
echo sylist($value);
}
}else{
//假如不存在,则建立一个间隔当前时候一分钟的时候为逾期时候
setcookie("date", time()+60*1,time()+3600);//个中的60*1为一分钟
//假如date不存在时则会输出空缺,此时随机输出内容
foreach($arr as $value){
echo sylist($value);
}
}
}else{
setcookie("date", time()+60*1,time()+3600);//个中的60*1为一分钟
setcookie("gid", $arrgid,time()+3600);//假如gid不存在,则建立gidcookie,内容为随机猎取的文章gid
//假如gid不存在时则会输出空缺,此时随机输出内容
foreach($arr as $value){
echo sylist($value);
}
}
?>
本文代码由 emlog学院陈子文供应,博客簿仅作保留分享之用!