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 生成静态页面入门介绍的更多相关文章

  1. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  2. PHP生成静态页面的方法

          在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存 等实现页面静态化,今天就以PHP实例教程形 ...

  3. .net 生成 静态页面

    .net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...

  4. 比较详细PHP生成静态页面教程

    一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...

  5. PHP代码为什么不能直接保存HTML文件——&gt;PHP生成静态页面教程

    1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...

  6. PHP生成静态页面详解

    PHP生成静态页面详解 看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.好了,我们先回顾一些基本的概念. 一,PHP脚本与动态页面. PHP ...

  7. PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程

    1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...

  8. .NET生成静态页面并分页

    因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...

  9. C#根据网址生成静态页面

    HoverTree开源项目中HoverTreeWeb.HVTPanel的Index.aspx文件 是后台管理的首页. 包含生成留言板首页,以及显示用户名,退出等功能. 根据网址生成页面的方法: boo ...

随机推荐

  1. 挖一挖C#中那些我们不常用的东西之系列(4)——GetHashCode,ExpandoObject

    这篇继续分享下GetHashCode和ExpandoObject这两个比较好玩的方法. 一:GetHashCode 从MSDN上可以看到的解释是:用作特定类型的哈希函数,也就是说任何对象的实例都会有一 ...

  2. mysql-5 数据检索(3)

    计算字段 如果想在一个字段中既显示公司的名称,又显示公司的地址,但是这两个信息一般包含在不同的表列中 城市.州和邮政编码存储在不同的列中,但是邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来 ...

  3. Java的String.valueOf 转换 与、空串+类型变量转换与封装类(Integer)的toString方式转换比较。

    1.空串+类型变量方式转换 int i=20; String s=""+i; 这种方式实际上经过了两个步骤,首先进行了i.ToString()把 i 转换为 字符串,然后再进行加法 ...

  4. Java文件选择对话框(文件选择器JFileChooser)的使用:以一个文件加密器为例

    文件加密器,操作过程肯定涉及到文件选择器的使用,所以这里以文件加密器为例.下例为我自己写的一个文件加密器,没什么特别的加密算法,只为演示文件选择器JFileChooser的使用. 加密器界面如图: 项 ...

  5. 虚拟机centos6.5 --hadoop2.6集群环境搭建

    一.环境说明 虚拟机:virtualBox 系统:centos6.5,64位 集群:3个节点 master 192.168.12.232 slave01 192.168.12.233 slave02 ...

  6. Android图片开发内幕--基础篇

    前言:本来我是做电视应用的,但是因为公司要出手机,人员紧张,所以就抽调我去支援一下,谁叫俺是雷锋呢!我做的一个功能就是处理手机中的应用ICON,处理无非就是美化一下,重新与底板进行合成和裁剪,用到了很 ...

  7. android camera setMeteringArea详解

    摘要: 本文为作者原创,未经允许不得转载:原文由作者发表在博客园:http://www.cnblogs.com/panxiaochun/p/5802814.html setMeteringArea() ...

  8. 用U3D寻找看电视的感觉!!

    调整 Camera  的角度和你一致, 找到看电视的感觉了吧?! Y 224度 再调下X就行

  9. 在VMware Workstation上安装CentOS6.5系统步

    在VMware Workstation上安装CentOS6.5系统步骤 听语音 | 浏览:147 | 更新:2016-07-28 15:45 | 标签:安装 虚拟机 CENTOS 1 2 3 4 5 ...

  10. uva10344 23 out of 5

    Your task is to write a program that can decide whether you can nd an arithmetic expression consisti ...