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 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
phpmyadmin操作流程
Oct 09 PHP
用PHP读取和编写XML DOM的实现代码
Feb 03 PHP
一个PHP验证码类代码分享(已封装成类)
Jul 17 PHP
关于zend studio 出现乱码问题的总结
Jun 23 PHP
深入解析phpCB批量转换的代码示例
Jun 27 PHP
PHP中判断变量为空的几种方法分享
Aug 26 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
php简单实现多维数组排序的方法
Sep 30 PHP
Laravel框架集成UEditor编辑器的方法图文与实例详解
Apr 17 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php操作redis数据库常见方法实例总结
Feb 20 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使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
单击按钮显示隐藏子菜单经典案例
2013/01/04 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
express的中间件bodyParser详解
2014/12/04 Javascript
javascript实现简单的页面右下角提示信息框
2015/07/31 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
IE8 内存泄露(内存一直增长 )的原因及解决办法
2016/04/06 Javascript
jquery输入数字随机抽奖特效的简单实现代码
2016/06/10 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
js实现华丽的九九乘法表效果
2017/03/29 Javascript
js封装成插件的步骤方法
2017/09/11 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue 中滚动条始终定位在底部的方法
2018/09/03 Javascript
nodejs基础之多进程实例详解
2018/12/27 NodeJs
JavaScript内置对象之Array的使用小结
2020/05/12 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
Python 文件读写操作实例详解
2014/03/12 Python
Python2包含中文报错的解决方法
2018/07/09 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
利用python实现.dcm格式图像转为.jpg格式
2020/01/13 Python
利用PyQt中的QThread类实现多线程
2020/02/18 Python
浅析python标准库中的glob
2020/03/13 Python
python 实现单例模式的5种方法
2020/09/23 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
铭万公司.net面试题笔试题
2014/07/20 面试题
学习2014年全国两会心得体会
2014/03/12 职场文书
留学经费担保书
2014/05/12 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
职工培训工作总结
2015/08/10 职场文书
Promise静态四兄弟实现示例详解
2022/07/07 Javascript