大家会问什么是缓存!能干什么!
其实缓存相当于内存。保存一段时间!
缓存就是我们执行东西时候不用在执行数据库了。直接执行我们的缓存就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();
}
}
上例可能涉及到很多函数!有些是我定义的!大家主要看看大概思想。
呵呵。希望大家可以评论 啊!