入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

thinkphp 静态缓存

创建时间:2016-10-27 投稿人: 浏览次数:948
thinkphp的静态缓存是指将访问的每个页面按照一定的规则缓存起来,下一次访问时直接读取相应的缓存,这样就能加快访问速度。
静态缓存与生成静态类似,区别在于生成静态后要更新内容必须重新生成,但是静态缓存可以在设置的缓存时间超出后自动重新生成缓存,缓存时间重新计算,这样就既能减小服务器解析模板的压力,又同时能自动更新。
静态缓存与完全静态在访问速度方面相比稍微慢一点,但与不打开静态缓存就有天壤之别了。


当被缓存的页面html结构改变的时候,会马上重新生成缓存(注意是html结构),后端传过来的数据量增减不会重新去生成缓存文件


tp的开启静态缓存这里就不说了,自己去看官方文档


tp只要生成了静态页面且静态页面还没过期,再次访问数据的时候就会访问静态页面,不需要我们做什么其他操作。


接下来实例说话:


tp配置 根据你自己的实际情况配置

//静态缓存
    "HTML_CACHE_ON"     =>    true, // 开启静态缓存
    "HTML_CACHE_TIME"   =>    60,   // 全局静态缓存有效期(秒)
    "HTML_FILE_SUFFIX"  =>    ".php", // 设置静态缓存文件后缀
    "HTML_PATH" => "./Application/html",//静态缓存文件目录,HTML_PATH可任意设置,此处设为当前项目下新建的html目录
    "HTML_CACHE_RULES"=>[   //缓存规则
        "dbcurd:"=>["{:module}_{:controller}_{:action}",60,"md5"],
        "testCatch:"=>["{:action}_{code}",30],
    ],

controller类

namespace HomeController;
use ThinkController;

class TestCatchController extends Controller{
    public function index(){
        if(IS_GET){
            echo "hhhhh";
        }

  //数据量大的时候就是体现出静态缓存的作用
//        $arr=[];
//        for($i=0;$i<500000;$i++){
//            $arr[]=[
//              "i"=>$i,
//                "name"=>"czh".$i,
//                "age"=>26,
//            ];
//        }
//
//        $this->assign("arr",$arr);

        //小数据量
        $message=[
            "name"=>"czh",
            "age"=>26,
            "habby"=>"basketball",
            "habby2"=>"basketball",
        ];
        $this->assign("message",$message);

        $this->display();
    }
}

html页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<!--<volist name="arr" id="vo">-->
    <!--<div><{$vo.i}>----<{$vo.name}>----<{$vo.age}></div>-->
<!--</volist>-->

<ul>
    <volist name="message" id="vo">
        <li><{$vo}></li>
    </volist>
</ul>
</body>
</html>

当第一次访问的时候 ,生成静态文件,如果设置的过期时间,在没超过过期时间里面无论怎么刷新页面,都是读取缓存文件。(后台的数组内容无论怎么增减都会读取缓存文件)。当过期时间到的时候,再刷新页面就会重新生成缓存页面。


还有一种情况会在还没到过期时间的时候去重新生成缓存文件,就是html页面发生变化的时候(添加了新元素等)。


大家可以自己去尝试下。



阅读更多
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。