PHP Smarty 页面静态化加分页和缓存控制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP Smarty 页面静态化加分页和缓存控制相关的知识,希望对你有一定的参考价值。
php页面
<?php //打开输出控制缓冲 ob_start(); //新建模板文件 $file = "./cache/newindex{$_GET[‘page‘]}.html"; $cachetime = 10; const DSN = ‘mysql:host=localhost;dbname=test‘; const DBUSER = ‘root‘; const DBPWD = ‘root‘; //模板不存在或者超过缓存时间才生成缓存模板 if(!file_exists($file) || filemtime($file)+$cachetime<time()){ //创建smarty对象 require_once ‘./libs/Smarty.class.php‘; require_once ‘page.class.php‘; //定义根目录 define(‘ROOT‘, str_replace("\\", "/",dirname(__FILE__))."/"); //实例化Smarty类 $smarty=new Smarty(); //设定定界符 $smarty->left_delimiter="<{"; $smarty->right_delimiter="}>"; //设置为false 定界符号左右可以有空格 $smarty->auto_literal = false; //添加一个插件的目录 //$smarty->setPluginsDir(ROOT."/libs/myplugins/"); //注意添加一个插件,要把系统默认设置的路径加入 否则不能使用默认系统的插件 $smarty->setPluginsDir(array( ROOT."/libs/plugins/",//系统默认设置的路径 ROOT."/libs/myplugins/",//自定义的 )); //连接数据库 try{ $pdo = new PDO(DSN, DBUSER,DBPWD); }catch(PDOException $e){ echo "数据库连接失败:".$e->getMessage(); exit; } $query = "select id, username, password,email from users limit 3"; $stmt = $pdo->prepare($query); $stmt ->execute(); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty->assign(‘users‘,$users); //var_dump($users); $query = "desc users"; $stmt = $pdo->prepare($query); $stmt ->execute(); $tdname = $stmt->fetchAll(PDO::FETCH_COLUMN); //var_dump($tdname); $page = new Page(20, 2); $smarty->assign(‘tdname‘,$tdname); $smarty->assign(‘fpage‘,$page->fpage()); //变量输出 $smarty->display(‘hello.tpl‘); //返回输出缓冲区的内容 $content = ob_get_contents(); //将一个字符串写入文件 file_put_contents("./cache/newindex{$_GET[‘page‘]}.html", $content); //冲刷出(送出)输出缓冲区中的内容 ob_flush(); echo "缓存文件不存在,查询数据库,再生成缓存文件,输出到浏览器"; }else{ include $file; echo "直接加载缓存文件"; } ?>
模板tpl页面
<head> <meta http-equiv="content-type" content="text/html;charset=utf-8"/> </head> <style type="text/css"> </style> <script type="text/javascript"> function abc(){ } </script> <{config_load file="../config/my.conf " section="index"}> <body bgcolor=‘<{ #bgcolor# }>‘> <h3><{#title#}></h3> <table border="1" width="800" align="center"> <caption>用户信息表</caption> <th align="center">index</th> <th align="center">iteration</th> <{foreach $tdname as $val}> <th align="center"><{$val}></th> <{/foreach}> <{section name="one" loop=$users }> <{if $smarty.section.one.first}> <tr bgcolor="red" align="center"> <{elseif $smarty.section.one.last}> <tr bgcolor="yellow" align="center"> <{elseif $smarty.section.one.iteration is even}> <tr bgcolor="pink" align="center"> <{else}> <tr bgcolor="green" align="center"> <{/if}> <td><{$smarty.section.one.index}></td> <td><{$smarty.section.one.iteration}></td> <td><{$users[one].id}></td> <td><{$users[one].username}></td> <td><{$users[one].password}></td> <td><{$users[one].email}></td> </tr> <{sectionelse}> 没有用户查询出来! <{/section}> <tfoot><tr><td colspan="6" align="center"> <{$fpage}> </td></tr></tfoot> </table> </body>
浏览器页面
本文出自 “津沙港湾” 博客,请务必保留此出处http://11410485.blog.51cto.com/11400485/1844499
以上是关于PHP Smarty 页面静态化加分页和缓存控制的主要内容,如果未能解决你的问题,请参考以下文章