页面静态化与动态页的比拟,静态没有了SQL和一些后端脚本运行,安全稳定,访问速率快,对SEO友好(网上也有说现在的搜索引擎已经对动态网页的抓取没什么压力了),但是搜索引擎再强大,静态的URL也比动态的后面带问号冒号什么的要好看,不对SEO友好对普通浏览用户者也是友好(好看第一)。但是天生静态页面的弊端,也便是如果一个博客网站,随着文章内容的增多,那天生的页面也不断增多,就算一个html就30几Kb,数量多的情形下也挺耗存储空间,网上也有说频繁天生静态页面化,随意马虎让硬盘涌现坏道。这个我的意见是不好测试可以忽略,由于现在多数是利用云做事器或云虚拟主机,那些都不是物理硬件,就算太过碎片导致硬盘破坏,网站也能正常访问的,由于那是云做事器。
2. 真静态与伪静态

这二者的比拟看起来像是正统之争,由于大家都知道伪静态还是动态页,只是Apache通过URL重写规则让其变成了像静态网页的样子。紧张也是让自己对SEO友好,但是比较真静态多了Apache的步骤,以是也就比较耗费一些做事器的资源。而真静态的缺陷上面也说了,在项目中的选择看需求,各有利弊,北桥苏的利用紧张是自己网站有时要优化一下速率以是就做了模板静态化,以下是操作过程。

实现思路
1. 根据模块掌握器自动递归创建目录。
2. file_exists判断天生的静态页是否存在
3. 或判断过期与否,存在重定向到静态网页
4. file_put_contents($file,$content)函数天生页面。
编码
1. 目录的创建
/ 递归创建目录 @param string $dir 文件目录路径 @return boolean 创建结果 /function mkdirs($dir){ if(!is_dir($dir)) { if(!mkdirs(dirname($dir))){ return false; } if(!mkdir($dir,0777)){ return false; } } return true;}
2. 在基类中初始化需创建的目录
protected $staticHtmlDir = \"大众\公众; //静态模板天生目录protected $staticHtmlFile = \"大众\"大众; //静态文件protected function _initialize() { parent::_initialize(); $this->staticHtmlDir = \公众html\公众.DS.$this->request->controller().DS;//……………………………………………………………………
3. 基类中的天生前与天生后的方法。
//判断是否存在静态public function beforeBuild($param) { //天生静态 //$baseDir = \"大众html\公众.DS.$this->request->controller().DS; if(is_array($param)) { $param = implode(\公众_\"大众,$param); } $this->staticHtmlFile = $this->staticHtmlDir.$this->request->action().($param?$param:'').'.html'; if(mkdirs($this->staticHtmlDir)) { if(file_exists($this->staticHtmlFile) && filectime($this->staticHtmlFile)>=time()-6060245) { //静态文件存在 $this->redirect('/'.$this->staticHtmlFile); } } }//开始天生静态文件public function afterBuild($html) { if(!empty($this->staticHtmlFile) && !empty($html)) { if(file_exists($this->staticHtmlFile)) { unlinnk($this->staticHtmlFile); } if(file_put_contents($this->staticHtmlFile,$html)) { $this->redirect('/'.$this->staticHtmlFile); } } }
4. 视图掌握器中的利用。
ThinkPHP5中fetch方法返回给file_put_contents函数作为content就可以天生一个完全的静态页面了。






