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 strtok()函数的优点分析
Mar 02 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
PHP仿盗链代码
Jun 03 PHP
解析PHP无限级分类方法及代码
Jun 21 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
php中文繁体和简体相互转换的方法
Mar 21 PHP
PHP实现冒泡排序的简单实例
May 26 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例
Jul 07 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
Oct 08 PHP
php获取微信openid方法总结
Oct 10 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
英雄试炼之肉山谷—引领RPG新潮流
2020/04/20 DOTA
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP中的异常处理机制深入讲解
2020/11/10 PHP
jquery移动节点实例
2015/01/14 Javascript
jquery插件qrcode在线生成二维码
2015/04/26 Javascript
js正则表达式验证邮件地址
2015/11/12 Javascript
javascript中Date format(js日期格式化)方法小结
2015/12/17 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
react-redux中connect()方法详细解析
2017/05/27 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
小程序最新获取用户昵称和头像的方法总结
2019/09/23 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
Django中login_required装饰器的深入介绍
2017/11/24 Python
numpy.delete删除一列或多列的方法
2018/04/03 Python
通过pycharm使用git的步骤(图文详解)
2019/06/13 Python
pandas数据处理进阶详解
2019/10/11 Python
Python pandas RFM模型应用实例详解
2019/11/20 Python
Python 调用有道翻译接口实现翻译
2020/03/02 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
生物制药毕业生自荐信
2013/10/16 职场文书
学生励志演讲稿
2014/01/06 职场文书
通信研究生自荐信
2014/02/01 职场文书
大队干部竞选演讲稿
2014/04/28 职场文书
收银员岗位职责
2015/02/03 职场文书
小组组名及励志口号
2015/12/24 职场文书
Nginx 匹配方式
2022/05/15 Servers