ThinkPHP 的页面静态化功能的实现(一)

页面静态化有很多好处,加快页面打开浏览速度,有利于搜索引擎优化SEO,减轻服务器负担,网站更安全,HTML页面不会受php相关漏洞的影响。

常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化。

ThinkPHP 也自带了生成静态文件的方法 buildHtml,方法在 /ThinkPHP/Library/Think/Controller.class.PHP,Line 86:

[php] view plain copy
  1. /** 
  2.  *  创建静态页面 
  3.  * @access protected 
  4.  * @htmlfile 生成的静态文件名称 
  5.  * @htmlpath 生成的静态文件路径 
  6.  * @param string $templateFile 指定要调用的模板文件 
  7.  * 默认为空 由系统自动定位模板文件 
  8.  * @return string 
  9.  */  
  10. protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') {  
  11.     $content    =   $this->fetch($templateFile);  
  12.     $htmlpath   =   !empty($htmlpath)?$htmlpath:HTML_PATH;  
  13.     $htmlfile   =   $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX');  
  14.     Storage::put($htmlfile,$content,'html');  
  15.     return $content;  
  16. }  

使用方法也很简单:

(1)在根目录下的程序入口文件index.php中加下面这行:

[php] view plain copy
  1. define('HTML_PATH''./HTML/');//生成静态页面的文件位置  
(2)在项目的配置文件config.php中加下面这行:
[php] view plain copy
  1. 'HTML_FILE_SUFFIX' => '.html',// 默认静态文件后缀  
(3)在需要生成静态页的action里调用方法
[php] view plain copy
  1. public function index(){  
  2.     $map = "id = $_GET[id]";  
  3.     $list = M("artical")->where($map)->limit(5)->order("add_time desc")->select();  
  4.     $this->assign("news"$list);  
  5.     $this->buildHtml('news', HTML_PATH . '/news/''index');  
  6.     $this->display();  
  7. }  

然后在根目录下的HTML目录中就会出现一个news.html文件。

这种方法虽然操作简单,但其实没什么意义,在现实项目中基本用不到,因为它存在很多不足:

(1)它只是一个单纯的静态的HTML文件,访问网页的时候也不会被访问到。

(2)它只是根据方法生成页面,在列表分页的时候,多个页面是同一个方法产生,但静态化出来的只有一个文件,也就是只有一个页面。

所以这种方法不推荐使用!!!

你可能感兴趣的:(php)