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
PHP自定义函数收代码
Aug 01 PHP
CI框架源码阅读,系统常量文件constants.php的配置
Feb 28 PHP
解析PHP正则提取或替换img标记属性
Jun 26 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
Dec 21 PHP
盘点PHP和ASP.NET的10大对比!
Dec 24 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
May 13 PHP
你不知道的文件上传漏洞php代码分析
Sep 29 PHP
php的常量和变量实例详解
Jun 27 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 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如何得到当前页和上一页的地址?
2006/11/27 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
2017/09/28 PHP
javascript常用方法、属性集合及NodeList 和 HTMLCollection 的浏览器差异
2010/12/25 Javascript
new Date()问题在ie8下面的处理方法
2014/07/31 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
JavaScript使用focus()设置焦点失败的解决方法
2014/09/03 Javascript
jQuery Masonry瀑布流插件使用详解
2014/11/17 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
简介JavaScript中的push()方法的使用
2015/06/09 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
Jquery为DIV添加click事件的简单实例
2016/06/02 Javascript
Node.js中process模块常用的属性和方法
2016/12/13 Javascript
微信小程序获取音频时长与实时获取播放进度问题
2018/08/28 Javascript
Python中的startswith和endswith函数使用实例
2014/08/25 Python
Python随机数random模块使用指南
2016/09/09 Python
python利用OpenCV2实现人脸检测
2020/04/16 Python
详解Python使用tensorflow入门指南
2018/02/09 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
Python Opencv提取图片中某种颜色组成的图形的方法
2019/09/19 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
python支持多继承吗
2020/06/19 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
如何用Lucene索引数据库
2016/02/23 面试题
请说出几个常用的异常类
2013/01/08 面试题
九年级家长会邀请函
2014/01/15 职场文书
我们的节日端午节活动方案
2014/03/02 职场文书
餐饮总经理岗位职责
2014/03/07 职场文书
私人委托书格式
2014/09/10 职场文书
2014财产信托协议书范本
2014/11/18 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
python基础入门之字典和集合
2021/06/13 Python