- 开发无止境 -
Data: 2012-12-12 23:08:33Form: JournalClick: 9
页面静态化有很多好处,加快页面打开浏览速度,有利于搜索引擎优化SEO,减轻服务器负担,网站更安全,HTML页面不会受php相关漏洞的影响。
常说的页面静态化分为两种,一种是伪静态,即url 重写,一种是真静态化。
ThinkPHP 也自带了生成静态文件的方法 buildHtml,方法在
/ThinkPHP/Library/Think/Controller.class.php,Line 86:
/**
* 创建静态页面
* @access protected
* @htmlfile 生成的静态文件名称
* @htmlpath 生成的静态文件路径
* @param string $templateFile 指定要调用的模板文件
* 默认为空 由系统自动定位模板文件
* @return string
*/
protected function buildHtml($htmlfile='',$htmlpath='',$templateFile='') {
$content = $this->fetch($templateFile);
$htmlpath = !empty($htmlpath)?$htmlpath:HTML_PATH;
$htmlfile = $htmlpath.$htmlfile.C('HTML_FILE_SUFFIX');
Storage::put($htmlfile,$content,'html');
return $content;
}
使用方法也很简单:
(1)在根目录下的程序入口文件index.php中加下面这行:
define('HTML_PATH', './HTML/');//生成静态页面的文件位置
(2)在项目的配置文件config.php中加下面这行:
'HTML_FILE_SUFFIX' => '.html',// 默认静态文件后缀
(3)在需要生成静态页的action里调用方法
public function index(){ $map = "id = $_GET[id]"; $list = M("artical")->where($map)->limit(5)->order("add_time desc")->select(); $this->assign("news", $list); $this->buildHtml('news', HTML_PATH . '/news/', 'index'); $this->display(); }
然后在根目录下的HTML目录中就会出现一个news.html文件。
=========================================
如实执行了,把buidhtml放在了common.php里,作为函数,其他都一样,还解决了生成文件名乱码的情况:
$keyword=iconv("UTF-8","gb2312", $keyword); $this->buildHtml($keyword, HTML_PATH . '/event/', 'index');