php缓存—静态页面

来源:互联网 发布:简单的h5游戏源码 编辑:程序博客网 时间:2024/06/04 19:42

大家会问什么是缓存!能干什么!
其实缓存相当于内存。保存一段时间!

缓存就是我们执行东西时候不用在执行数据库了。直接执行我们的缓存就OK了
一般来说,缓存的目的是把数据放在一个地方让访问的更快点,毫无疑问,内存是最快的,但是,几百M的数据能往内存

放么?这不现实,当然,有的时候临时放如服务器缓存,

如ob_start()这个缓存页面开启的话在发送文件头之前页面内

容都被缓存在内存中,知道等页面输出自动清楚或者等待ob_get_contents的返回,

或者被ob_end_clean显示的清除,

这在静态页面的生成中能很好的利用,在模板中能得到很好的体现,

我的这篇文章深入的讨论了:谈PHP生成静态页面

,这是一种方式,但这是临时性的,不是解决我们问题的好方法.
可以这么说:缓存一般分为页面缓存和数据缓存。
ADODB缓存是数据缓存。
smarty是页面缓存。
adodb缓存是
<?php
include(./adodb/adodb.inc.php);
$ADODB_CACHE_DIR='tmp';
$db=NewADOConnect('mysql');
$db->connect('localhost','root','123456','mysql');
$sql="select * from user";
$db->cacheexecute(300,$sql);
?>
这样在TMP目录下生成了缓存!(缓存文件是序列化的数据。)
当下次在执行的时候,我们直接从缓存里面读取数据。
SMARTY缓存:
<?php
require('./smarty/Smarty.class.php');
$smarty = new Smarty;

$smarty->caching = true;

if(!$smarty->is_cached('index.tpl')) {
    // No cache available, do variable assignments here.
    $contents = get_database_contents();
    $smarty->assign($contents);
}

$smarty->display('index.tpl');
?>
这个首先判断是否有这个缓存文件!没有直接链接数据库!
有的话!执行DISPLAY。就是读取缓存。
大家看到上面的2个例子!对缓存有很大的理解了吧!

现在说下怎么生成我们的HTML页面!

其实就是用FILE,MKDIE相关函数来做!

给大家一个函数。以前我写的啊!

function HTMLPage($path, $oldPage=null)
{
//载入全局变量
global $successList, $errorList, $db,$timer;

if(!empty($path))
{
   //原路径为0,1,5,14,50 去掉0,1,代表的根目录,生成5,14,50
   //不是根目录
   if(strlen($path) > 3)
   {  
    $path = substr($path, 4);
    //将5,14,50转换成5/14/50
    $path = str_replace(",", "/", $path);
   
    //判断本月目录是否存在,不存在则创建
    $dirName = date("Y-m");
    $path = $path . "/" . $dirName;   
   }
   else
   {
    $path = date("Y-m");;
   }
   //添加时使用物理路径
   if(!is_dir(ARTICLE_REAL_PATH . $path))
   {
    if(!@mkdir(ARTICLE_REAL_PATH . $path))
    {
     exit("建立日期目录失败.");
    }
   }
   //parseArticle.php需要一个文章信息的数组$parseArt;
   $parseArt = $_POST;
   $styleName= APP_STYLE;

   //得到HTML字符串
   $htmlStr = parseArticle($_POST, $styleName);

   //使用原来的文件名
   if($oldPage != null && $_POST['catPath'] == $_POST['oldPath'])
   {
    $fileName = $oldPage;
   }
   else
   {
    $prefix = date("Ymd-His");
    //文件名格式为20041027-122101.htm
    $fileName = ARTICLE_REAL_PATH . $path . "/" . $prefix . ".htm";
   }
   $fp = fopen($fileName, "w");
   fwrite($fp, $htmlStr);
   fclose($fp);

   return $fileName;
}
else
{
   $errorList[] = array("message" => "生成页面时发生错误.");
}
if(!empty($errorList)) //处理错误
{
   $param["msgList"] = serialize($errorList);
   forward("message.php", $param);
   exit();
}
}

上例可能涉及到很多函数!有些是我定义的!大家主要看看大概思想。
呵呵。希望大家可以评论 啊!

原创粉丝点击