thinkphp 页面静态化

页面静态化代码在最后

静态页面

是网页的代码都在页面中,不需要执行asp,php,jsp,.net等程序生成客户端网页代码的网页,静态页面网址中一般不含“=”“&”等特殊符号 注意:静态页面并非网站上没有动画的就是静态页面。

动态页面

是通过执行asp,php,jsp,.net等程序生成客户端网页代码的网页。常见的扩展名有:.asp .php .jsp .cgi.aspx 等。 注意:动态页面的“动态”是网站与客户端用户互动的意思,而非网页上有动画的就是动态页面。

什么是PHP静态化

就是使网站生成页面以静态HTML的形式展现在访客面前,PHP静态化分纯静态化和伪静态化,两者的区别在于PHP生成静态页面的处理机制不同。

为什么要让网页静态化

一、加快页面打开浏览速度,静态页面无需连接数据库打开速度较动态页面有明显提高;
二、有利于搜索引擎优化SEO,Baidu、Google都会优先收录静态页面,不仅被收录的快还收录的全;
三、减轻服务器负担,浏览网页无需调用系统数据库;
四、网站更安全,HTML页面不会受php相关漏洞的影响; 观看一下大一点的网站基本全是静态页面,而且可以减少攻击,防sql注入。

数据库出错时,不影响网站正常访问。
生成html文章虽操作上麻烦些,程序上繁杂些,但为了更利于搜索,为了速度更快些,更安全,这些牺牲还是值得的。

thinkPHP实现静态页的方法-buildHtml

简版

public function index(){
    $info = $this->buildHtml("realindex1.html", '  ', 'blogs/index');

//                              生成的静态页名称   ②目录 ③方法名
    dump($info);
}

在需要生成静态页的函数里加入上面代码可以自动生成你想要的静态页面

 

完整版
 //首页显示
public function index(){
    if(file_exists(HTML_PATH.'realindex.html')){//file_exists检查文件是否存在 if(time()-filemtime(HTML_PATH.'realindex.html')<=600)//filemtime() 函数返回文件内容上次的修改时间。
            $this->display(HTML_PATH."realindex.html");
        else
            $this->createIndex();//调用(将首页生成为一个静态页面)的函数
    }else{
        $this->createIndex();
    }
}
 //将首页生成为一个静态页面
private function createIndex(){
    $user = M('user');
    $uid = $_SESSION['uid'];
    $blog = M('blog');
    $fenlei = M('blogclass');
    $i = $user->where("uid=$uid")->find();
    $datas = $blog->table('blog b,user u')->where("b.uid=u.uid and bisvalid=1")->limit(0, 10)->select();
    $data = $fenlei->select();
    //统计阅读量
    $yueduliang = $blog->table('blog b,userblog ub')->where("b.bid=ub.bid and ub.isvalid=1")
        ->field('b.bid,b.bbiaoti,count(ub.bid) ubnum')->group('b.bid')->order('ubnum desc')->select();
    //统计评论量
    $pinglunliang = $blog->table('pinglun p,blog b')->where("p.bid=b.bid and p.pstatus=1 and p.pisvalid=1 ")
        ->field('b.bid,b.bbiaoti,count(p.pid) pnum')->group('b.bid')->order('pnum desc')->select();
    $this->assign('name', $i['uloginname']);
    $this->assign('data', $datas);
    $this->assign('fenlei', $data);
    $this->assign('yueduliang', $yueduliang);
    $this->assign('pinglunliang', $pinglunliang);
    $this->buildHtml("realindex.html", '', 'blogs/index');
    $this->display('blogs/index');
}

 

显示页面就不截图了

欢迎交流QQ634487911

       微信:CP-634487911

原文地址:https://www.cnblogs.com/cp168168/p/7911803.html