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编程之高级技巧——利用Mysql函数
Oct 09 PHP
PHP实现多服务器session共享之NFS共享的方法
Mar 16 PHP
php下防止单引号,双引号在接受页面转义的设置方法
Sep 25 PHP
解析php框架codeigniter中如何使用框架的session
Jun 24 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
百度站点地图(百度sitemap)生成方法分享
Jan 09 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
Jul 28 PHP
discuz目录文件资料汇总
Dec 30 PHP
php操作memcache缓存方法分享
Jun 03 PHP
thinkphp中的url跳转用法分析
Jul 12 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
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
我的论坛源代码(九)
2006/10/09 PHP
PHP 和 XML: 使用expat函数(一)
2006/10/09 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
dhtmlxTree目录树增加右键菜单以及拖拽排序的实现方法
2013/04/26 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
js自带函数备忘 数组
2006/12/29 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
2012/09/14 Javascript
javascript中通过arguments参数伪装方法重载
2014/10/08 Javascript
js实现tab切换效果实例
2015/09/16 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
vue.js 上传图片实例代码
2017/06/22 Javascript
微信小程序设置滚动条过程详解
2019/07/25 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
使用vuex存储用户信息到localStorage的实例
2019/11/11 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
Python中常用信号signal类型实例
2018/01/25 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python IDLE清空窗口的实例
2018/06/25 Python
Python实现的简单线性回归算法实例分析
2018/12/26 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
jupyter 添加不同内核的操作
2021/02/06 Python
美国眼镜网站:EyeBuyDirect
2017/04/13 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
荣耀俄罗斯官网:HONOR俄罗斯
2020/10/31 全球购物
2014年社区植树节活动方案
2014/02/28 职场文书
预备党员综合考察材料
2014/05/31 职场文书
身份证丢失证明
2015/06/19 职场文书
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
浅谈Python从全局与局部变量到装饰器的相关知识
2021/06/21 Python