php模版静态化技术
PHP页面的静态化很有必要,尤其是在CMS系统中,一些内容一旦生成,基本上不会有变化,这时如果用html将页面静态化,无疑会减少服务其解析PHP页面的负担。以下是看书学来的PHP静态化技术,记录之以备不时之需。
无论是利用框架还是简单的脚本,原理基本一致:就是利用PHP进行文件操作,替换html模板中的动态元素。
简单的例子:
1.建立模板(template.html)
<html>
<head>
<title>一篇文章</title>
</head>
<body>
<div id = "headline">%headline%</div>
<div id = "content">%content%</div>
</body>
</html>
模板很简单,要填充的有2条数据分别是文章题目(%headline%)、文章内容(%content%),这些东西就是所谓的动态元素。
2.静态化脚本(toStatic.php)
代码 <?php //Replace函数用于将从模版文件中读取的内容中的关键字替换成变量中的内容 function Replace($row, $headline = '', $content = '') { //替换参数中的关键字 $row = str_replace("%headline%", $headline, $row); $row = str_replace("%content%", $content, $row); //返回替换后的结果 return $row; } //主程序 $connection = mysql_connect("localhost", "username", "password") or die(mysql_error()); $database = mysql_select_db($connection, "dbname") or die(mysql_error()); //新添加的文章信息 $headline = $_POST['headline']; $content = $_POST['content']; //生成文件名,这里用日期时间 $filename = 'S'.date("YmdHis").'.html'; //执行SQL语句 $sql = "insert into news values('$headline', '$content', '$filename')"; $res = mysql_query($sql); //根据SQL执行语句返回的bool型变量判断是否插入成功 if($res) { //模版文件指针 $f_tem = fopen("template.html","r"); //生成的文件指针 $f_new = fopen($filename,"w"); //循环读取模版文件,每次读取一行 while(!feof($f_tem)) { $row = fgets($f_tem); //替换读入内容中的关键字 $row = Replace($row, $headline, $content); //将替换后的内容写入生成的HTML文件 fwrite($f_new, $row); } //关闭文件指针 fclose($f_new); fclose($f_tem); //提示 echo "OK!"; } else echo "Failed!"; mysql_close(); ?>
3.一般的CMS都会记录内容被浏览的信息,例如浏览次数或者浏览者的IP信息等,静态页面要记录这些信息,可以在模板中加入一个长宽都为0的图片,指向计数脚本。
以记录浏览次数为例:
<img width='0' height='0' src='counter.php?fileID=S001' />
这样,计数操作可以放到counter.php中进行,又不会破坏网页的静态性。
php模版静态化技术的更多相关文章
- php页面静态化技术;学习笔记
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- PHP静态化技术
很多框架的模板引擎都有页面静态化的功能 目的是为了优化网站运行时间 静态化分两种 纯静态和伪静态 一. 纯静态 纯静态展示的是实实在在的静态页面 运行PHP程序 判断是否存在静态页 如果存在 展示 ...
- 网页静态化技术Freemarker的详细介绍
网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道 ...
- 网页静态化技术--Freemarker入门
网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又 ...
- 网页静态化技术Freemarker
1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息 ...
- 网页静态化技术Freemarkerh简介
1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信 ...
- 页面静态化技术Freemarker技术的介绍及使用实例.
一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 ...
- java秒杀系列(2)- 页面静态化技术
前言 通过代码片段分别介绍服务端渲染.客户端渲染.对象缓存三种方式的写法. 代码片段仅供参考,具体实现需要根据业务场景自行适配,但思想都是一样. 一.服务端渲染方式 1.接口返回html页面的设置 @ ...
- 高性能Java Web 页面静态化技术(原创)
package com.yancms.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache ...
随机推荐
- Android贝塞尔曲线应用-跳动的水滴
主要通过6个控制点实现. val startPoint = PointF() val endPoint = PointF() val control1 = PointF() val control2 ...
- 【sqli-labs】 less13 POST - Double Injection - Single quotes- String -twist (POST型单引号变形双注入)
报错 闭合掉括号 这关登录成功之后不显示登录的用户名密码了
- CorelDRAW2019新耀发布会,报名即可领红包!
30年时光荏苒!眨眼风惊雨过. 在1989年的春天,CorelDRAW 1.0正式发布,一经面世就掀起了图形设计行业革命浪潮,这个图形工具不仅给设计师提供了矢量图像.页面设计,更能应用于网站制作.位 ...
- Js 删除前弹出确认框
<td align="center" valign="middle" class="black3"> <c:if test ...
- Android 性能测试初探(五)
书接上文 Android 性能测试初探之 GPU(四) 前文说了的一些性能测试项大家可能都听说,接下来我们聊聊大家不常关注的测试项- 功耗 . 功耗测试主要从以下几个方面入手进行测试 测试手机安装目标 ...
- python 疑难杂症
1.getpass模块 :Pycharm不支持getpass模块,使用terminal可运行,但是getpass中文提示显示乱码?
- 【ubuntu子系统】使用windows自带的ubuntu子系统
在windows10系统中,自带了一款ubuntu子系统,就像是一个应用程序,一款软件,提供ubutnu的terminal窗口,可以使用对应的命令行模式.最重要的是,可以直接用来连接linux服务 ...
- 11.6 【Linq】分组和延续
11.6.1 使用 group...by 子句进行分组 class Program { static void Main(string[] args) { var query = from defec ...
- Linux挂载NAS共享文件夹
[root@ftp:/mnt] > mount -o username=user01,password=1234567890 //192.168.31.20/share /mnt/nas [ro ...
- Mahmoud and a Dictionary
Mahmoud and a Dictionary time limit per test 4 seconds memory limit per test 256 megabytes input sta ...