真静态缓存:(真的生成一个html页面,在接下来的操作中直接调用该html)
第一次(刷新网页面)判断是否存在缓存文件 (可设置一时间)
如果不存在 第一次是(可根据PDO)连接数据库 查找数据 输出到页面 并且同时缓存(写入)到本地一个.html文件;
再次(刷新网页面) 判断是否存有该缓存文件时
当存在缓存文件,直接查找本地缓存(file_get_content) 读取出来以下代码在ci框架中编写完成$time = 10; //设置缓存页面过期时间i...
代码如下:function createHashDir($sign) { $md5 = md5($sign); if(!is_dir(MB_CACHE)) mkdir(MB_CACHE); for($i=1;$i<=4;$i++) { $dir .= $md5{$i}./; if(!is_dir(MB_CACHE.$dir)) { mkdir(MB_CACHE.$dir); } } return MB_CACHE.$dir; } function setCacheFile($data,$sign = a,$type = array,$id = ) { $cacheDir = $this -> createHashDir($sign); if(!empty($data)) { $id = $id ? $id : $sign; $cacheFile = $cacheDir.$id..p...
function page_init(){$url = $_SERVER['REQUEST_URI'];//子url,该参数一般是唯一的$pageid = md5($url);$dir = str_replace('/','_',substr($_SERVER['SCRIPT_NAME'],1,-4));//目录命名方式,如exp_indexif(!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/cc8ef22b405566745ed21305dd248f...
本文介绍下,php中用于缓存控制的函数ob_start()的用法,有需要的朋友参考下吧。在php中,ob_start()函数用于打开缓冲区,比如header()函数之前如果就有输出,包括回车/空格/换行/都会有"Header had all ready send by"的错误。
此时可以先用ob_start()打开缓冲区php代码的数据块和echo()输出都会进入缓冲区而不会立刻输出。
对于php中打开缓冲区的方法,总结为四种:
1,用于header()之前输出
header("location:index.php"); //把...
// put this above any php image generation code:session_start(); header("Cache-Control: private, max-age=10800, pre-check=10800");header("Pragma: private");header("Expires: " . date(DATE_RFC822,strtotime(" 2 day")));在header("Content-type: image/jpeg");添加这段代码,它将规定当前页面缓存的时间(两天),并在下一次访问中使用这个缓存时间节点。
接下来判断是否已经有缓存,如果有,就使用缓存。
情况一:如果...
代码如下:function createHashDir($sign) { $md5 = md5($sign); if(!is_dir(MB_CACHE)) mkdir(MB_CACHE); for($i=1;$i<=4;$i++) { $dir .= $md5{$i}./; if(!is_dir(MB_CACHE.$dir)) { mkdir(MB_CACHE.$dir); } } return MB_CACHE.$dir; } function setCacheFile($data,$sign = a,$type = array,$id = ) { $cacheDir = $this -> createHashDir($sign); if(!empty($data)) { $id = $id ? $id : $sign; $cacheFile = $cacheDir.$id..p...
ob的基本原则:如果ob缓存打开,则echo的数据首先放在ob缓存。如果是header信息,直接放在程序缓存。当页面执行到最后,会把ob缓存的数据放到程序缓存,然后依次返回给浏览器。下面我说说ob的基本作用: 1)防止在浏览器有输出之后再使用setcookie()、header()或session_start()等发送头文件的函数造成的错误。其实这样的用法少用为好,养成良好的代码习惯。 2)捕捉对一些不可获取的函数的输出,比如phpinfo()会输出一大堆的HTML,...
代码如下:** * @说明: 文件缓存输出 * @参数: $cachefile => cache文件(绝对路径) * @参数: $pertime => 缓存输出的间隔时间 * @参数: $sql => sql语句 * @参数: $templatefile => 模板文件名称(绝对路径) * www.php100.com 来自 **/ function __cache($cachefile,$pertime,$sql,$templatefile) { global $db; if(time() - @filemtime($cachefile) >= $pertime) { $query = $db->query($sql); while($r=$db->fetch($query)) { $cac...
/**@title:IE缓存函数(PHP)@author:axgle*/iecache();echo date("Y-m-d H:i:s");
function iecache() { $_SERVER[HTTP_IF_NONE_MATCH]?header(Etag:1,true,304):header(Etag:1);}?>
IE缓存函数将数据缓存在用户浏览器中。对于不需要及时更新的文件,可以用它加快其显示速度。
代码如下:** * @说明: 文件缓存输出 * @参数: $cachefile => cache文件(绝对路径) * @参数: $pertime => 缓存输出的间隔时间 * @参数: $sql => sql语句 * @参数: $templatefile => 模板文件名称(绝对路径) * www.php100.com 来自 **/ function __cache($cachefile,$pertime,$sql,$templatefile) { global $db; if(time() - @filemtime($cachefile) >= $pertime) { $query = $db->query($sql); while($r=$db->fetch($query)) { $cac...
这涉及到4种头标类型: Last-Modified(最后修改时间); Expires(有效期限); Pragma(编译指示); Cache-Control(缓存控制); 前三个头标属于HTTP1.0标准。头标Last-Modified使用UTC日期时间值。如果缓存系统发现Last-Modified值比页面缓存版本的更接 近当前时间,他就知道应该使用来自服务器的新版本。 Expires 表明了缓存版本何时应该过期(格林威治标准时间)。把它设置为一个以前的时间就会强制使用服务器上的页面。 P...
代码如下:function createHashDir($sign) { $md5 = md5($sign); if(!is_dir(MB_CACHE)) mkdir(MB_CACHE); for($i=1;$i<=4;$i++) { $dir .= $md5{$i}./; if(!is_dir(MB_CACHE.$dir)) { mkdir(MB_CACHE.$dir); } } return MB_CACHE.$dir; } function setCacheFile($data,$sign = a,$type = array,$id = ) { $cacheDir = $this -> createHashDir($sign); if(!empty($data)) { $id = $id ? $id : $sign; $cacheFile = $cacheDir.$id..p...
这里有缓存技术的简单介绍:http://www.bitsCN.com/article/4965.htm php页面缓存主要用到的是ob系列函数,如ob_start(),ob_end_flush(),ob_get_contents() 下面是编码部分。 1.初始化函数,一般是设置页面缓存路径、缓存文件命名格式等,可按个人喜好自定义。这里用到的识别ID是经加密的$_SERVER[REQUEST_URI]参数。这个函数中最后还有一个if判断:若未过缓存期,则加载缓存文件,否则加载源文件。 代码如下:functio...
flush():刷新输出程序缓存for($i = 0; $i echo str_repeat("\n", 5000); echo $i; sleep(1); flush();}ob_start(回调函数,限定长度,随时输出缓存=true):开启,前提:output_buffer = onob_clear():刷新ob_end_clear():关闭,并刷新ob_flush():输出ob_end_flush():关闭,并输出ob_get_contents:返回缓存ob_get_clean():返回缓存,并刷新ob_get_flush():返回缓存,并关闭ob_get_length():返回缓存内容长度ob...
代码如下:** * @说明: 文件缓存输出 * @参数: $cachefile => cache文件(绝对路径) * @参数: $pertime => 缓存输出的间隔时间 * @参数: $sql => sql语句 * @参数: $templatefile => 模板文件名称(绝对路径) * www.php100.com 来自 **/ function __cache($cachefile,$pertime,$sql,$templatefile) { global $db; if(time() - @filemtime($cachefile) >= $pertime) { $query = $db->query($sql); while($r=$db->fetch($query)) { $cac...