用 Smarty 生成静态页面入门介绍
why Smarty?
随着公司首页(以下简称首页)流量越来越大,最近开始考虑使用后台语言生成静态页面的技术。
我们知道,一个简单页面一般是一个 .html(或者 .htm 、.shtml)后缀的文件,然后在 html 页面中再引入一些 css 和 js。如果一个页面里全部是静态元素,那么打开速度会相当地快,但是首页的内容经常需要修改,部分内容还需要实时更新(一天三次),线上做法是将需要经常改动的模块做成接口,用 ajax 去请求然后渲染页面,但是这样做增加了服务器压力(每次打开都需要请求接口数据),而且增加了首页渲染的速度(请求+渲染),如果能用接口数据生成静态页面,就完美了,每次数据需要修改或者更新时,生成个静态页面,更新线上的静态页面,能极大地减轻服务器的压力。Smarty 正是能帮忙做这件事的利器!
实战
Smarty 是一个使用PHP写出来的模板引擎,具体介绍可以自行百度谷歌,这里只关心其基本用法。
我们先下载 Smarty,比如我下的是 "smarty-3.1.27" 版本,将其解压,放在 apache 的相关目录下。比如楼主放在了 wampserver 的 www 目录下,并将其重命名为 "smarty"。
假设我们的首页是这样一个简单页面:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>hanzichi</title>
</head>
<body>
<p>hello world</p>
</body>
</html>
我们需要经常修改的是 title 的内容以及 p 标签内的内容。Smarty 规定需要动态生成的内容用 {$valueName} 的形式表示:
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>{$title}</title>
</head>
<body>
<p>{$content}</p>
</body>
</html>
我这里把上面的内容保存为 m.tpl,放在 "smarty\demo\templates" 目录下。
模板已经写完,我们还需要一个启动模板的 php 文件,我们在 "smarty\demo" 目录下新建个 "m.php" 的文件,内容如下(注意 assign() 的内容和 .tpl 中的内容对应,且只差个 $):
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign("title", "hello, zichi");
$smarty->assign("content", "hello world");
$smarty->display('m.tpl');
?>
我们再在浏览器中打开 http://localhost/smarty/demo/m.php,如果页面已经变成了 hello world,那么模板替换就成功了!
但是通常情况下我们要的是生成一个 .html 文件,可以先在 "smarty\demo" 目录下新建个 index.html 文件,然后把 m.php 替换成如下内容:
<?php
require '../libs/Smarty.class.php';
$smarty = new Smarty;
$smarty->assign("title", "hello, zichi");
$smarty->assign("content", "hello world");
$contect = $smarty->fetch("m.tpl");
$fp = fopen("index.html", "w");
fwrite($fp, $contect);
fclose($fp);
?>
最后再运行该 php 文件,那么 index.html 内容就自动被替换成有 'hello world' 的内容了!
当然,这只是最简单的 Smarty 模板替换,其他一些初级中级高级的应用还需要进一步探索!
用 Smarty 生成静态页面入门介绍的更多相关文章
- 浅谈php生成静态页面
一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...
- PHP生成静态页面的方法
在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存 等实现页面静态化,今天就以PHP实例教程形 ...
- .net 生成 静态页面
.net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...
- 比较详细PHP生成静态页面教程
一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...
- PHP生成静态页面详解
PHP生成静态页面详解 看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.好了,我们先回顾一些基本的概念. 一,PHP脚本与动态页面. PHP ...
- PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程
1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...
- .NET生成静态页面并分页
因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...
- C#根据网址生成静态页面
HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件 是后台管理的首页. 包含生成留言板首页,以及显示用户名,退出等功能. 根据网址生成页面的方法: boo ...
随机推荐
- TY创新D总个人经历谈
这是深圳一个公司的老板(就叫D总吧)在吃饭间和我们讲起的他的个人经历,这中间个人的苦辣酸甜,有些意思,值得玩味,就做了个实录. D总:我当时做餐饮是在我第一次创业失败之后.我做的是一家火锅店. 这家餐 ...
- JSP连接数据库
1.将c3p0-0.9.5.2.jar/mchange-commons-java-0.2.11.jar/ojdbc6.jar三个包放在WEB-INF的lib文件夹下,将web.xml文件放到WEB-I ...
- coursera机器学习笔记-建议,系统设计
#对coursera上Andrew Ng老师开的机器学习课程的笔记和心得: #注:此笔记是我自己认为本节课里比较重要.难理解或容易忘记的内容并做了些补充,并非是课堂详细笔记和要点: #标记为<补 ...
- Java api 入门教程 之 JAVA的String 类
1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s = “Java语 ...
- history
history用来显示最近执行的命令,系统中将当前的允许的最大保存的历史命令条数保存在环境变量HISTSIZE中,缺省选项时表示显示最多HISTSIZE个命令,可以指定显示最近的n条命令 $histo ...
- 九、Android学习第八天——广播机制与WIFI网络操作(转)
(转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 九.Android学习第八天——广播机制与WIFI网络操作 今天熟悉了An ...
- android apk 防止反编译技术第四篇-对抗JD-GUI
又到周末一个人侘在家里无事可干,这就是程序员的悲哀啊.好了我们利用周末的时间继续介绍android apk防止反编译技术的另一种方法.前三篇我们讲了加壳技术(http://my.oschina.net ...
- instanceof
java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例. instanceof通过返回一个布尔值来指出,这个对象是否是这个特定类或者是它的子类的一个实例. result ...
- [转帖]VS选中某个代码报错修补
如题,此问题,出现在xp sp3的情况比较多,至少在我常用的两台电脑上面是这样子的, 完整的安装了VS2010之后,在编写代码的时候,只要用鼠标拖选代码或者双击,选中某个代码,IDE就自动报错 重启 ...
- 南邮oj[1401] 乘车费用
Description lqp家离学校十分十分远,同时他又没有钱乘taxi.于是他不得不每天早早起床,匆匆赶到公交车站乘车到学校.众所周知CZ是个公交车十分发达的地方,但是CZ的公交车十分的奇怪,lq ...