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程序中的常见漏洞进行攻击(下)
Oct 09 PHP
PHP生成静态页
Nov 25 PHP
PHP在字符串中查找指定字符串并删除的代码
Oct 02 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
6个超实用的PHP代码片段
Aug 10 PHP
最准确的php截取字符串长度函数
Oct 29 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
Jul 25 PHP
smarty模板数学运算示例
Dec 11 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php微信开发之音乐回复功能
Jun 14 PHP
PHP实现字符串大小写转函数的功能实例
Feb 06 PHP
PHP全局使用Laravel辅助函数dd
Dec 26 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中addslashes函数与sql防注入
2014/11/17 PHP
PHP导入导出Excel代码
2015/07/07 PHP
javascript实现的DES加密示例
2013/10/30 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
JS两种类型的表单提交方法实例分析
2016/11/28 Javascript
利用JS判断客户端类型你应该知道的四种方法
2017/12/22 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
vue draggable resizable gorkys与v-chart使用与总结
2019/09/05 Javascript
vue遍历对象中的数组取值示例
2019/11/07 Javascript
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
2018/06/27 Python
关于Python-faker的函数效果一览
2019/11/28 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
如何将json数据转换为python数据
2020/09/04 Python
Python实现自动装机功能案例分析
2020/10/22 Python
Css3新特性应用之视觉效果实例
2016/12/12 HTML / CSS
请说出你所知道的线程同步的方法
2013/04/19 面试题
高级电工工作职责
2013/11/21 职场文书
九年级语文教学反思
2014/02/04 职场文书
毕业生欢送会主持词
2014/03/31 职场文书
春季防火方案
2014/05/10 职场文书
年终考核实施方案
2014/05/26 职场文书
物流专业求职信
2014/06/30 职场文书
地球物理学专业推荐信
2014/09/08 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
企业宣传稿范文
2015/07/23 职场文书
浅谈Python协程asyncio
2021/06/20 Python
vue elementUI批量上传文件
2022/04/26 Vue.js
Spring Boot 实现 WebSocket
2022/04/30 Java/Android