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 相关文章推荐
ie6 动态缩略图不显示的原因
Jun 21 PHP
网页游戏开发入门教程三(简单程序应用)
Nov 02 PHP
纯php打造的tab选项卡效果代码(不用js)
Dec 29 PHP
CentOS 安装 PHP5.5+Redis+XDebug+Nginx+MySQL全纪录
Mar 25 PHP
php去除二维数组的重复项方法
Nov 03 PHP
PHP实现适用于自定义的验证码类
Jun 15 PHP
php自定义截取中文字符串-utf8版
Feb 27 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP设计模式之模板模式定义与用法详解
Dec 20 PHP
启用OPCache提高PHP程序性能的方法
Mar 21 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
php array_intersect()函数使用代码
2009/01/14 PHP
php学习之 认清变量的作用范围
2010/01/26 PHP
php的curl封装类用法实例
2014/11/07 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
php微信支付接口开发程序
2016/08/02 PHP
PHP开发的微信现金红包功能示例
2017/06/29 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
Extjs中ComboBox加载并赋初值的实现方法
2012/03/22 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
JS获取CSS样式(style/getComputedStyle/currentStyle)
2016/01/19 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
jQuery旋转插件jqueryrotate用法详解
2016/10/13 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
JavaScript无操作后屏保功能的实现方法
2017/07/04 Javascript
vue获取元素宽、高、距离左边距离,右,上距离等还有XY坐标轴的方法
2018/09/05 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
2019/09/28 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
python3使用urllib示例取googletranslate(谷歌翻译)
2014/01/23 Python
pygame学习笔记(5):游戏精灵
2015/04/15 Python
Python中查看变量的类型内存地址所占字节的大小
2019/06/26 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
Python气泡提示与标签的实现
2020/04/01 Python
TensorFlow固化模型的实现操作
2020/05/26 Python
QML实现钟表效果
2020/06/02 Python
python中return如何写
2020/06/18 Python
全球领先的美容用品专卖店:Beauty Plus Salon
2018/09/04 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
自主招生自荐信格式
2013/12/03 职场文书
社会实践感言
2014/01/25 职场文书
桥梁工程专业求职信
2014/04/21 职场文书
实验室的标语
2014/06/20 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
保留意见审计报告
2015/06/05 职场文书
Python预测分词的实现
2021/06/18 Python