在掏出数据以后把数据缓存在客户端,然后cookie指定一个时候周期,在下次革新时先推断这个cookie时候到期没,假如到期了就从新革新,不然就挪用当地缓存。以下是以 emlog 博客为案例的代码
<?php //载入全局加载项 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 '<li><a target="_blank" href="'.Url::log($row['gid']).'">'.$row['title'].'</li>'; } } /***********依据cookie在指定时候内猎取内容**************/ //推断cookie【gid】是不是存在 if (isset($_COOKIE["gid"])){ //推断cookie【date】逾期时候是不是存在 if(isset($_COOKIE["date"])){ echo '逾期时候为:'.date("Y-m-d H:i:s", $_COOKIE["date"]).'<br/><br/>'; //推断时候是不是逾期,当前时候大于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学院陈子文供应,博客簿仅作保留分享之用!

评论列表