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 设计模式之 单例模式
Dec 19 PHP
PHP 基于Yii框架中使用smarty模板的方法详解
Jun 13 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
PHP登录环节防止sql注入的方法浅析
Jun 30 PHP
php从完整文件路径中分离文件目录和文件名的方法
Mar 13 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
PHP加密解密实例分析
Dec 25 PHP
PHP实现微信网页授权开发教程
Jan 19 PHP
PHP简单实现生成txt文件到指定目录的方法
Apr 25 PHP
php原生导出excel文件的两种方法(推荐)
Nov 19 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP count_chars()函数讲解
Feb 14 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函数常用用法小结
2010/02/08 PHP
php入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
PHP 文件上传后端处理实用技巧方法
2017/01/06 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
JavaScript国旗变换效果代码
2008/08/13 Javascript
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
jquery实用代码片段集合
2010/08/12 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript中的定时器之Item23的合理使用
2015/10/30 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
Javascript中 带名 匿名 箭头函数的重要区别(推荐)
2017/01/29 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
Angular 开发学习之Angular CLI的安装使用
2017/12/31 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
python list语法学习(带例子)
2013/11/01 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
pandas中去除指定字符的实例
2018/05/18 Python
python实现黑客字幕雨效果
2018/06/21 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
15行Python代码实现网易云热门歌单实例教程
2019/03/10 Python
python的几种矩阵相乘的公式详解
2019/07/10 Python
葡萄牙航空官方网站:TAP Air Portugal
2019/10/31 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
党员年终民主评议的自我评价
2013/11/05 职场文书
护理实习自我鉴定
2013/12/14 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
学雷锋先进个人事迹
2014/05/26 职场文书
宪法宣传周工作方案
2014/05/26 职场文书
党员个人对照检查材料思想汇报
2014/09/16 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
《少年闰土》教学反思
2016/02/18 职场文书
2019年恭贺升学祝福语集锦
2019/08/15 职场文书
Python中使用Opencv开发停车位计数器功能
2022/04/04 Python