ThinkPHP5中如何实现模板完全静态化详解.docxVIP

ThinkPHP5中如何实现模板完全静态化详解.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

ThinkPHP5中如何实现模板完全静态化详解

目录对比1.动态与真静态2.真静态与伪静态实现思路编码1.目录的创建2.在基类中初始化需创建的目录3.基类中的生成前与生成后的方法4.视图控制器中的使用

对比

模板完全静态化,也就是通过模板完全生成纯静态的网页,相比动态页面和伪静态页面更安全更利于SEO访问更快。相比前二者各有利弊吧,现在稍微对这三种形式的优缺点对比一下,以及在ThinkPHP5项目中实现完全静态化的基本过程。

1.动态与真静态

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

2.真静态与伪静态

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

实现思路

1.根据模块控制器自动递归创建目录

2.file_exists判断生成的静态页是否存在

3.或判断过期与否,存在重定向到静态网页

4.file_put_contents($file,$content)函数生成页面

编码

1.目录的创建

/*

*递归创建目录

*@paramstring$dir文件目录路径

*@returnboolean创建结果

***/

functionmkdirs($dir)

if(!is_dir($dir))

if(!mkdirs(dirname($dir))){

returnfalse;

if(!mkdir($dir,0777)){

returnfalse;

returntrue;

}

2.在基类中初始化需创建的目录

protected$staticHtmlDir=;//静态模板生成目录

protected$staticHtmlFile=;//静态文件

protectedfunction_initialize(){

parent::_initialize();

$this-staticHtmlDir=html.DS.$this-request-controller().DS;

3.基类中的生成前与生成后的方法

//判断是否存在静态

publicfunctionbeforeBuild($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()-60*60*24*5){//静态文件存在

$this-redirect(/.$this-staticHtmlFile);

//开始生成静态文件

publicfunctionafterBuild($html){

if(!empty($this-staticHtmlFile)!empty($html)){

if(file_exists($this-sta

文档评论(0)

139****7676 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档