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中进行,又不会破坏网页的静态性。

时间: 2024-08-04 11:58:54

php模版静态化技术的相关文章

网站优化—页面静态化技术

数据库检索的问题 主要是为了减少数据库的操作,让MySQL能够提供更强大的服务 ? 使用缓存技术 磁盘缓存:就是将用户请求数据库的数据,保存到磁盘文件形成一个静态的HTML文本,下次用户的访问的时候,直接返回该HTML文本. 内存缓存:将MySQL的数据取出之后,保存到内存(memcache,不算一个NOSQL数据库,但是是一个缓存系统)之中,下次直接从内存中返回.(效率非常高) 注意:只要不使用sql语句作为查询条件的数据库(仓库)就叫做NOSQL数据库 优化MySQL 设计:存储引擎的选择,

php页面静态化技术;学习笔记

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

HTML静态化技术

[优势:HTML静态化技术可以以增加访问速度,减轻服务器负担,更容易被搜索引擎找到.] 在五年前,有百分之八十的网站要求做成动态的.也就是从那个时候也就是ASP的发展高峰期.一些静态网页也要求做成动态网站.但是这两年来,网站要求做成静态的.也就是网页要求静态化. 为什么会有这样的变化?到底意味着什么? 目前网页HTML静态化是利用其它的动态技术生成HTML静态页面,还不是静态网站.因为的确是这样的,生成HTML静态网页好处多多. 一.减轻服务器负担. 二.有利于搜索引擎优化SEO,Baidu.G

PHP静态化技术

很多框架的模板引擎都有页面静态化的功能  目的是为了优化网站运行时间 静态化分两种  纯静态和伪静态 一. 纯静态 纯静态展示的是实实在在的静态页面 运行PHP程序 判断是否存在静态页 如果存在 展示静态页 如果不存在 生成静态页 再展示实现方法 是PHP的ob缓冲 //PHP程序一系列逻辑 并将要展示的数据赋值给某些变量准备在模板中使用 ob_start();//开启ob缓冲区 也可以在配置文件中开启 require_once('template/index.php');//引入模板文件 也有

网页静态化技术Freemarker的详细介绍

网页静态化技术Freemarker 一.Freemarker的基本介绍 1.1为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息,这样的情况同样也适用于使用网页静态化来解决. 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合大规模且相对变化不太频繁的数据.另外网页静态化

网页静态化技术--Freemarker入门

网页静态化技术:为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息,这样的情况同样也适用于使用网页静态化来解决. 网页静态化技术和缓存技术的共同点都是为了减轻数据库的访问压力,但是具体的应用场景不同,缓存比较适合小规模的数据,而网页静态化比较适合较大规模且相对变化不太频繁的数据. 另外我们如果将网页以纯静态化的形式展现,就可以使用Nginx这样的高性能

[项目构建 九]babasport 页面静态化技术Freemarker技术的介绍及使用实例.

一.FreeMarker简介 1.动态网页和静态网页差异 在进入主题之前我先介绍一下什么是动态网页,动态网页是指跟静态网页相对应的一种网页编程技术.静态网页,随着HTML代码的生成,页面的内容和显示效 果就不会再发生变化(除非你修改页面代码).而动态网页则不然,页面代码虽然没有发生变化,但是显示的内容却是可以随着时间.环境或者数据库操作的结果而 发生相应的变化.简而言之,动态网页是基本的HTML语法规范与java.VB.VC等高级程序设计语言.数据库编程等多种技术的融合,以实现对网站内容 和风格

大数据学习总结记录—页面静态化技术(Freemarker/velocity)&amp; 网站伪静态(UrlRewriteFilter)

Freemaker  静态化模板技术 模板的作用 模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开

高性能Java Web 页面静态化技术

package com.yancms.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; import org.apache.commons.httpclient.params.HttpMethodParams; /** * 静态页面引擎技术(突乱了乱码问题UTF-8) * @author 吴彦文 * */ public cl