ThinkPHP 的页面静态化功能的实现(一)
2017-02-10 16:01
459 查看
页面静态化有很多好处,加快页面打开浏览速度,有利于搜索引擎优化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目录中就
4000
会出现一个news.html文件。
这种方法虽然操作简单,但其实没什么意义,在现实项目中基本用不到,因为它存在很多不足:
(1)它只是一个单纯的静态的HTML文件,访问网页的时候也不会被访问到。
(2)它只是根据方法生成页面,在列表分页的时候,多个页面是同一个方法产生,但静态化出来的只有一个文件,也就是只有一个页面。
所以这种方法不推荐使用!!!
常说的页面静态化分为两种,一种是伪静态,即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目录中就
4000
会出现一个news.html文件。
这种方法虽然操作简单,但其实没什么意义,在现实项目中基本用不到,因为它存在很多不足:
(1)它只是一个单纯的静态的HTML文件,访问网页的时候也不会被访问到。
(2)它只是根据方法生成页面,在列表分页的时候,多个页面是同一个方法产生,但静态化出来的只有一个文件,也就是只有一个页面。
所以这种方法不推荐使用!!!
相关文章推荐
- ThinkPHP 的页面静态化功能的实现(一)
- ThinkPHP 的页面静态化功能的实现(二)
- ThinkPHP 的页面静态化功能的实现(三)
- 基于 ThinkPHP 3.2.3 的页面静态化功能的实现
- ThinkPHP 3.2.3实现页面静态化功能的方法详解
- Asp.Net MVC页面静态化功能实现二:用递归算法来实现
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule和ResultFilter
- Asp.Net MVC页面静态化功能实现一:利用IHttpModule,摒弃ResultFilter
- 在web页面中打印功能的实现问题集锦
- 使用Web Datawindow ActiveX实现Web页面的打印功能
- 一个实现图片上传/产生缩略图/在上传图片上写字功能的完整页面代码
- ASP实现页面的“上一篇、下一篇”功能
- 多框架 跨页面调用jsp过程,实现功能导航树的隐藏
- Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)
- 实现jsp页面得分页显示功能方案
- 在ASP.NET页面中实现数据库备份和恢复功能
- Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)
- 如何实现ie禁止返回功能和禁止用户用back space键返回页面(未测试)
- Ajax程序中,自己实现页面前进、后退、与标签功能(asp.net2.0)
- (转)XML HTTP实现无刷新页面功能