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 相关文章推荐
如何给phpadmin一个保护
Oct 09 PHP
mysql5写入和读出乱码解决
Nov 25 PHP
PHP开发中常用的8个小技巧
Aug 27 PHP
php2html php生成静态页函数
Dec 08 PHP
使用PHP遍历文件夹与子目录的函数代码
Sep 26 PHP
Zend Framework中的简单工厂模式 图文
Jul 10 PHP
浅谈php serialize()与unserialize()的用法
Jun 05 PHP
PHP图片库imagemagick安装方法
Sep 23 PHP
php实现Mongodb自定义方式生成自增ID的方法
Mar 23 PHP
php使用str_shuffle()函数生成随机字符串的方法分析
Feb 17 PHP
原生JS实现Ajax通过POST方式与PHP进行交互的方法示例
May 12 PHP
详解PHP素材图片上传、下载功能
Apr 12 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中使用全局变量的几种方法
2013/06/24 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
PHP实现登录验证码校验功能
2018/05/17 PHP
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
javascript实现一个数值加法函数
2015/06/26 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
利用iscroll4实现轮播图效果实例代码
2017/01/11 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
微信小程序收藏功能的实现代码
2018/06/12 Javascript
你不知道的Vue技巧之--开发一个可以通过方法调用的组件(推荐)
2019/04/15 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
JavaScript 引用类型实例详解【数组、对象、严格模式等】
2020/05/13 Javascript
javascript实现数字时钟效果
2021/02/06 Javascript
[54:10]Spirit vs NB Supermajor小组赛 A组败者组决赛 BO3 第一场 6.2
2018/06/03 DOTA
Pycharm学习教程(1) 定制外观
2017/05/02 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
python3.6下Numpy库下载与安装图文教程
2019/04/02 Python
Python imageio读取视频并进行编解码详解
2019/12/10 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
python名片管理系统开发
2020/06/18 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
英国汽车座椅和婴儿车购物网站:Uber Kids
2017/04/19 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
考试没考好检讨书
2014/01/31 职场文书
计算机系统管理员求职信
2014/06/20 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
2015年社区流动人口工作总结
2015/05/12 职场文书
开发一个封装iframe的vue组件
2021/03/29 Vue.js
收音机爱好者玩机13年,简评其使用过的19台收音机
2022/04/30 无线电