Smarty实现页面静态化(生成HTML)的方法


Posted in PHP onMay 23, 2016

本文实例讲述了Smarty实现页面静态化(生成HTML)的方法。分享给大家供大家参考,具体如下:

为了减少数据库读取次数,某些内容不经常被更改的页面,比如文章详细页面需要做成HTML静态页面。

在使用Smarty的情况下,也可以实现页面静态化。下面先简单说一下使用Smarty时通常动态读取的做法。

一般分这几步:

1、通过URL传递一个参数(ID);

2、然后根据此ID查询数据库;

3、取得数据后根据需要修改显示内容;

4、assign需要显示的数据;

5、display模板文件。

Smarty静态化过程只需要在上述过程中添加两个步骤:

第一:在1之前使用 ob_start() 打开缓冲区。

第二:在5之后使用 ob_get_contents() 获取内存未输出内容,然后使用fwrite()将内容写入目标html文件。

根据上述描述,此过程是在网站前台实现的,而内容管理(添加、修改、删除)通常是在后台进行,为了能有效

利用上述过程,可以使用一点小手段,那就是Header()。具体过程是这样的:在添加、修改程序完成之后,使用

Header() (当然还有其它方式)跳到前台读取,这样可以实现页面HTML化,然后在生成html后再跳回后台管理侧,而这两个跳转

过程是不可见的。

<?php
$cachefile="./cache/demo.html";//把缓存文件放到一个cache文件夹里
$cachetime=20;
if (!file_exists($cachefile ) || filemtime($cachefile)+$cachetime < time()) //判断是否存在和过期时间
{
  ob_start();//输出控制
  echo '<table border="1" width="800" align="center">';
  echo '<caption><h1>user</h1></caption>';
  echo '<tr>';
  echo "<td>11111</td>";
  echo "<td>22222</td>";
  echo '</tr>';
  echo '<tr>';
  echo "<td>11111</td>";
  echo "<td>22222</td>";
  echo '</tr>';
  echo '</table>';
$html=ob_get_contents();
file_put_contents($cachefile, $html);//输出到缓存文件
ob_end_flush();//输出并关闭缓冲区
}
else{
  echo 'ceshi';
 include $cachefile;
}
?>

希望本文所述对大家基于smarty模板的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP:风雨欲来 路在何方?
Oct 09 PHP
风格模板初级不完全修改教程
Oct 09 PHP
PHP session有效期问题
Apr 26 PHP
解析zend Framework如何自动加载类
Jun 28 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
PHP获取一个字符串中间一部分字符的方法
Aug 19 PHP
php获取远程文件大小
Oct 20 PHP
PHP浮点比较大小的方法
Feb 14 PHP
PHP使用curl模拟post上传及接收文件的方法
Mar 04 PHP
php单例模式的简单实现方法
Jun 10 PHP
创建无限极分类树型结构的简单方法
Jun 20 PHP
tp5.0框架隐藏index.php入口文件及模块和控制器的方法分析
Feb 11 PHP
php 数组随机取值的简单实例
May 23 #PHP
php使用ffmpeg向视频中添加文字字幕的实现方法
May 23 #PHP
Smarty模板变量调节器用法分析
May 23 #PHP
基于PHP后台的Android新闻浏览客户端
May 23 #PHP
Smarty保留变量用法分析
May 23 #PHP
php parse_str() 函数的定义和用法
May 23 #PHP
Smarty简单生成表单元素的方法示例
May 23 #PHP
You might like
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
PHP函数eval()介绍和使用示例
2014/08/20 PHP
php使用PDO方法详解
2014/12/27 PHP
php链表用法实例分析
2015/07/09 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
js实现网页随机切换背景图片的方法
2014/11/01 Javascript
Javascript动态创建div的方法
2015/02/09 Javascript
分享一些常用的jQuery动画事件和动画函数
2015/11/27 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
boostrapTable的refresh和refreshOptions区别浅析
2017/01/22 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
使用ionic播放轮询广告的实现方法(必看)
2017/04/24 Javascript
ReactNative踩坑之配置调试端口的解决方法
2017/07/28 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
手把手带你搭建一个node cli的方法示例
2020/08/07 Javascript
浅谈vue-props的default写不写有什么区别
2020/08/09 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
对于Python编程中一些重用与缩减的建议
2015/04/14 Python
Python3生成手写体数字方法
2018/01/30 Python
将字典转换为DataFrame并进行频次统计的方法
2018/04/08 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
解决numpy矩阵相减出现的负值自动转正值的问题
2020/06/03 Python
Python 使用 PyQt5 开发的关机小工具分享
2020/07/16 Python
2020版Python学习路线图(附学习资料)
2020/09/15 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
初任培训自我鉴定
2013/10/07 职场文书
高三自我鉴定
2013/10/23 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
mysql优化
2021/04/06 MySQL