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 header()函数使用说明
Jul 10 PHP
PHP学习笔记之二
Jan 17 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
php实现文件下载(支持中文文名)
Dec 04 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
smarty实现多级分类的方法
Dec 05 PHP
php中使用base HTTP验证的方法
Apr 20 PHP
thinkPHP2.1自定义标签库的导入方法详解
Jul 20 PHP
PHP两种实现无级递归分类的方法
Mar 02 PHP
学习thinkphp5.0验证类使用方法
Nov 16 PHP
PHP树形结构tree类用法示例
Feb 01 PHP
yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
Apr 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
php文件服务实现虚拟挂载其他目录示例
2014/04/17 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
js加解密 脚本解密
2008/02/22 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
JS打开图片另存为对话框实现代码
2012/12/26 Javascript
博客侧边栏模块跟随滚动条滑动固定效果的实现方法(js+jquery等)
2013/03/24 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
JavaScript实现数组在指定位置插入若干元素的方法
2015/04/06 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
JavaScript 2018 中即将迎来的新功能
2018/09/21 Javascript
实例介绍JavaScript中多种组合继承
2019/01/20 Javascript
Vue2.0+Vux搭建一个完整的移动webApp项目的示例
2019/03/19 Javascript
node(koa2) web应用模块介绍详解
2019/03/29 Javascript
[02:43]2014DOTA2国际邀请赛 官方Alliance战队纪录片
2014/07/14 DOTA
Python解释执行原理分析
2014/08/22 Python
python安装mysql-python简明笔记(ubuntu环境)
2016/06/25 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
django-csrf使用和禁用方式
2020/03/13 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
CSS3自定义滚动条样式 ::webkit-scrollbar的示例代码详解
2020/06/01 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
三星加拿大官方网上商店:Samsung CA
2020/12/18 全球购物
初中化学教学反思
2014/01/23 职场文书
初三化学教学反思
2014/01/23 职场文书
中学生自我评价范文
2014/02/08 职场文书
全陪导游词
2015/02/04 职场文书
保研推荐信格式
2015/03/25 职场文书
2015秋季开学典礼主持词
2015/07/16 职场文书
清明节随笔
2015/08/15 职场文书