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 相关文章推荐
phpfans留言版用到的数据操作类和分页类
Jan 04 PHP
php日历[测试通过]
Mar 27 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
Apr 02 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
php实现mysql数据库操作类分享
Feb 14 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
Sep 24 PHP
php中通过DirectoryIterator删除整个目录的方法
Mar 13 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
Oct 10 PHP
php curl常用的5个经典例子
Jan 20 PHP
php7 安装yar 生成docker镜像
May 09 PHP
PHP正则表达式笔记与实例详解
May 09 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
浅谈PHP中的
2016/04/23 PHP
yii2控制器Controller Ajax操作示例
2016/07/23 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
用JavaScript调用WebService的示例
2008/04/07 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
input禁止键盘及中文输入,但可以点击
2014/02/13 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
Node.js中的process.nextTick使用实例
2015/06/25 Javascript
JS简单实现多级Select联动菜单效果代码
2015/09/06 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单
2016/11/25 Javascript
原生js实现放大镜
2017/02/20 Javascript
详解jQuery中的isPlainObject()使用方法
2018/02/27 jQuery
微信小程序滑动选择器的实现代码
2018/08/10 Javascript
elementUI Vue 单个按钮显示和隐藏的变换功能(两种方法)
2018/09/04 Javascript
vue 实现滚动到底部翻页效果(pc端)
2019/07/31 Javascript
解决layer.msg 不居中 ifram中的问题
2019/09/05 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
在Python中定义和使用抽象类的方法
2016/06/30 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
Python返回数组/List长度的实例
2018/06/23 Python
python机器学习之KNN分类算法
2018/08/29 Python
Pandas —— resample()重采样和asfreq()频度转换方式
2020/02/26 Python
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Java基础知识面试题
2014/03/25 面试题
企业理念标语
2014/06/09 职场文书
财政专业大学生职业生涯规划书
2014/09/17 职场文书
村干部群众路线整改措施思想汇报
2014/10/12 职场文书
小学生家长意见
2015/06/03 职场文书
小学生大队委竞选稿
2015/11/20 职场文书
2016天猫双十一广告语
2016/01/28 职场文书