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 相关文章推荐
第七节 类的静态成员 [7]
Oct 09 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
linux php mysql数据库备份实现代码
Mar 10 PHP
php垃圾代码优化操作代码
Aug 05 PHP
PHP支持多种格式图片上传(支持jpg、png、gif)
Nov 03 PHP
深入array multisort排序原理的详解
Jun 18 PHP
配置php.ini实现PHP文件上传功能
Nov 27 PHP
php实现的微信红包算法分析(非官方)
Sep 25 PHP
浅谈PHP中的
Apr 23 PHP
万能的php分页类
Jul 06 PHP
Laravel + Elasticsearch 实现中文搜索的方法
Feb 02 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 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 fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
2011/05/24 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
2015/09/28 PHP
php 基础函数
2017/02/10 PHP
JavaScript 中的事件教程
2007/04/05 Javascript
js实现点击注册按钮开始读秒倒计时的小例子
2013/05/11 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
jquery ajax中使用jsonp的限制解决方法
2013/11/22 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
JS定义网页表单提交(submit)的方法
2015/03/20 Javascript
个人总结的一些JavaScript技巧、实用函数、简洁方法、编程细节
2015/06/10 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
javascript每日必学之循环
2016/02/19 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
浅谈js在html中的加载执行顺序,多个jquery ready执行顺序
2016/11/26 Javascript
基于JavaScript实现窗口拖动效果
2017/01/18 Javascript
详解Angular-Cli中引用第三方库
2017/05/21 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
原生js实现无缝轮播图
2020/01/11 Javascript
一篇文章看懂JavaScript中的回调
2021/01/05 Javascript
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
Python利用Nagios增加微信报警通知的功能
2016/02/18 Python
图解Python变量与赋值
2018/04/03 Python
详解python statistics模块及函数用法
2019/10/27 Python
详解Python中namedtuple的使用
2020/04/27 Python
Python-jenkins模块获取jobs的执行状态操作
2020/05/12 Python
普天C++笔试题
2016/03/20 面试题
财务支持类个人的自我评价
2014/02/14 职场文书
中文专业求职信
2014/06/20 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
迟到检讨书范文
2015/01/27 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
民事起诉书范本
2015/05/19 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
教你如何使用Python开发一个钉钉群应答机器人
2021/06/21 Python
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
Python使用pyecharts控件绘制图表
2022/06/05 Python