thinkphp 靜態緩存

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 Home\Controller;
use Think\Controller;

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頁面發生變化的時候(添加了新元素等)。


大家可以自己去嘗試下。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章