smarty模板的中坚是二个类,下载好的沙盘中有那样多少个主要的文件夹

(1)libs宗旨文件夹
(2)int.inc.php那是进口文件
(3)plugins:本人写的插件文件夹
(4)templates_c:贮存编写翻译好的文件
(5)int.inc.php那是进口文件
(6)定义好常量:不能够改改

 

二、怎么用模板?

模板页面
1.引进模板的输入文件
include(“入口文件路线位置”);

2.一向用对象
提供三个主意:向模板中登记变量的方法(assign(名字,值)
$smarty->assign(“ceshi”,”你好”);
提供三个情势:展现模板的(display(模板的名称只怕路线))
$smarty->display(“ceshi.html”);

正规页面
{assign(名字)}

注意:
1.会见的是php的页面,展现的是html页面
2.html用到了表面包车型客车样式表,地点是相对于访谈的php页面来找外界体制

 

(1)php页面

<?php
$filename = "../cache/huancun.html";  //这个是放缓存的页面(缓存的不是代码,而是页面的源信息)

include("../init.inc.php");  //引入入口文件
include("../DBDA.php");   //引入数据库,要用到数据库的内容

$db = new DBDA();  //造新对象
$sql = "select * from chinastates";  //这是查找Chinastates表中的信息
$attr = $db->Query($sql);  //执行这个语句

$smarty->assign("shuzu",$attr);  //注册变量信息
$smarty->display("huancun.html");  //显示模板

凯旋门074网址下载好的模板中有这么几个重要的文件夹。凯旋门074网址下载好的模板中有这么几个重要的文件夹。  

(2)html页面

能够用表来呈现数据

<h1>数据列表</h1>
<table width="50%" border="1" cellpadding="0" cellspacing="0">
        <tr>
            <td>代号</td>
            <td>名称</td>
            <td>操作</td>
        </tr>

        <{foreach $shuzu as $v}>   <!--遍历显示这个表中的相应信息-->
            <tr>
                <td><{$v[0]}></td>
                <td><{$v[1]}></td>
                <td>操作</td>
            </tr>
        <{/foreach}>

</table>

  

凯旋门074网址下载好的模板中有这么几个重要的文件夹。看下效果

凯旋门074网址 1

 

二、正是编辑“缓存”功效

开展写入缓存的时候不是写入的下边包车型地铁php页面,而是以此页面包车型大巴源代码

凯旋门074网址 2

(1)那个cache文件中要认清这些huancun.html文件存不设有,存在什么?空头支票哪些?

结果就是:假设缓存文件存在:直接调用缓存;假如缓存文件空头支票:重新缓存。

A.假设那些文件存在(剖断文件存空中楼阁用的是:file_exists()方法)语句:

if(file_exists($filename))
{
    //直接调用缓存   
    include($filename);
}

凯旋门074网址下载好的模板中有这么几个重要的文件夹。  

B.不然(文件不设有)

 首要的是要在上头读取数据库的开始和结果充足这几项:

1.拉开内部存款和储蓄器缓存;

2.关闭内部存储器缓存;

它们是成对的!!!

else
{
    //重新缓存 
    ob_start();   //开启内存缓存

    include("../init.inc.php");
    include("../DBDA.php");

    $db = new DBDA();
    $sql = "select * from chinastates";
    $attr = $db->Query($sql);

    $smarty->assign("shuzu",$attr);
    $smarty->display("huancun.html");

    $str = ob_get_contents();  //获取内存中的缓存内容
    file_put_contents($filename,$str);  //将字符串中的内容放入$filename的文件中

    ob_flush(); //关闭内存缓存

    echo "#######################################";  //这个是为了区别哪个是刚出来的缓存文件

}

  

看下效果如下图,因为cache文件夹中绝非hunacun.html才会走上边包车型大巴“不然”语句,输出一长串的######

凯旋门074网址 3

再刷新一下就从未有过了,因为cache文件夹中曾经有了huancun.html文件

凯旋门074网址 4

 

三、缓存的管用时间

缓存假诺直接都在的话,那么后台怎么改,前边也不会开展修改,那么就要尽量缓存的灵光时间

代码如下:

$time = 10;  //缓存有效期10秒
if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )  //这是对缓存文件的判断

  

当缓存文件有了而且10秒以往就能够再次又不曾缓存文件时候的出口####  

 

四、实行分页的缓存

第一是分页的php页面包车型地铁书写,在上头的换代的php页面中开展再一遍修改,如下:

 

<?php
$p = 1;
if(!empty($_GET["page"]))
{
    $p = $_GET["page"];
}

$filename = "../cache/huancun{$p}.html";   //缓存文件存放的位置

$time = 10;  //缓存有效期10秒
if(file_exists($filename) && ((filemtime($filename)+$time)>= time()) )
{
    //直接调用缓存   
    include($filename);
}
else
{
    //重新缓存 
    ob_start();   //开启内存缓存

    include("../init.inc.php");
    include("../DBDA.php");

    $db = new DBDA();
    $sqll = "select count(*) from chinastates";
    $zts = $db->StrQuery($sqll);  //总条数的执行语句

    include("../page.class.php");
    $page = new Page($zts,10);  //分页显示的条数

    $sql = "select * from chinastates ".$page->limit;  //分页的$page->limit
    $attr = $db->Query($sql);

    $smarty->assign("fpage",$page->fpage());  //分页信息的显示
    $smarty->assign("shuzu",$attr);
    $smarty->display("huancun.html");

    $str = ob_get_contents();  //获取内存中的缓存内容
    file_put_contents($filename,$str);  //将$str的内容写入$filename的文件中

    ob_flush(); //关闭内存缓存

    echo "#######################################";

}

  

 

结果正是入下,每三个页面都会从缓存初阶有,10秒后失效

那是第2个页面,刚起头并未有缓存文件,所以会有####

凯旋门074网址 5

随意点一页,回来后正是有了缓存文件,所以并未有了###

凯旋门074网址 6

相关文章