目前CMS系统多采用了页面静态化,这样做的好处是:一是能减轻其服务器的负担,二是因为生成了HTML静态页面,所以其网站被搜索引擎搜索到的机率更大一些,也就是为了网站推广。
1、页面静态化分类
真静态:通过程序生成静态页面文件,当我们访问的时候,就是直接访问的静态页面。
伪静态:是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。具体可以参考前面章节:http://blog.csdn.net/zhao1234567890123456/article/details/38569139
2、真静态的实现方法
[1]利用模版生成静态文件,通过自己编写的文件或者是其他框架,例如:Smarty可以实现网站静态化。这里提供一个通过一个简单程序来理解利用模版生成静态文件。
模板文件template.htm:
[html] view plain copy print ?
-
-
- %title%
-
-
-
%title%
-
-
%body%
Copier après la connexion
-
-
<title>%title%</title> <h1>%title%</h1> <hr> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">%body%
Copier après la connexion
php文件:
[php] view plain copy print ?
-
- //Replace函数用于将从模版文件中读取的内容中的关键字替换成变量中的内容
- function Replace($row)
- {
- $title = "文章标题"; //定义用来替换的变量
- $body = "这里是文章主体";
- $row = str_replace("%title%", $title, $row); //替换参数中的关键字
- $row = str_replace("%body%", $body, $row);
- return $row; //返回替换后的结果
- }
-
- $f_tem = fopen("template.htm","r"); //模版文件指针
- $f_new = fopen("new.htm","w"); //生成的文件指针
- //循环读取模版文件,每次读取一行
- while(!feof($f_tem))
- {
- $row = fgets($f_tem);
- $row = Replace($row); //替换读入内容中的关键字
- fwrite($f_new, $row); //将替换后的内容写入生成的HTML文件
- }
- fclose($f_new); //关闭文件指针
- fclose($f_tem);
- ?>
<?php //Replace函数用于将从模版文件中读取的内容中的关键字替换成变量中的内容 function Replace($row) { $title = "文章标题"; <span style="font-family: Arial, Helvetica, sans-serif;">//定义用来替换的变量 $body = "这里是文章主体"; $row = str_replace("%title%", $title, $row); <span style="font-family: Arial, Helvetica, sans-serif;">//替换参数中的关键字 </span> $row = str_replace("%body%", $body, $row); return $row; <span style="font-family: Arial, Helvetica, sans-serif;">//返回替换后的结果 </span>} $f_tem = fopen("template.htm","r"); <span style="font-family: Arial, Helvetica, sans-serif;">//模版文件指针 </span>$f_new = fopen("new.htm","w"); <span style="font-family: Arial, Helvetica, sans-serif;">//生成的文件指针</span>//循环读取模版文件,每次读取一行 while(!feof($f_tem)) { $row = fgets($f_tem); $row = Replace($row); //替换读入内容中的关键字 fwrite($f_new, $row); //将替换后的内容写入生成的HTML文件 } fclose($f_new); <span style="font-family: Arial, Helvetica, sans-serif;">//关闭文件指针</span>fclose($f_tem); ?>
Copier après la connexion
[2]通过php程序写静态文件,这里提供一个简单案例
[php] view plain copy print ?
-
- ob_start();
- ?>
-
-
- 这个程序叫测试
-
-
- 这个是测试
-
-
-
- $out1 = ob_get_contents();
- ob_end_clean();
- $fp = fopen("ceshi.html","w");
- if(!$fp)
- {
- echo 文件不存在";
- exit();
- }
- else
- {
- fwrite($fp,$out1);
- fclose($fp);
- echo "Success";
- }
- ?>