1. 程式人生 > >靜態緩存

靜態緩存

back str 客戶端瀏覽器 輸出 裏的 echo 數據 即將 並且

靜態頁面緩存的原理:

//php在解析完當前這個頁面之後,它會把要生成的這些靜態的內容,先把它放在服務器的內存裏面,然後再把它發送到客戶端瀏覽器來執行顯示。

<?php

//下面要操作內存了
$filename = "../cache/test.html"; 
//$filename代表的是當前的這個test.php頁面緩存文件存放的位置。也就是要把緩存文件存放在哪個位置。
//也就是定好一個緩存文件的地址。
$youxiao = 3;  //定義緩存有效期為3秒。 如果超過時間超過這個有效期就需要從新查數據庫更新一遍信息。


//filemtime($filename)是文件的上次修改時間。

//只有當緩存文件存在並且緩存沒有超過有效期。
if(file_exists($filename) && (filemtime($filename)+$youxiao)>time())//加個有效期來判斷通過這個文件存在,並且是在有效期之內才能讀 { //如果存在,就直接讀取緩存文件 include($filename); //把緩存文件直接拿進來就可以顯示了 }else{ ob_start(); //開啟內存緩存 //開啟後這句代碼下面的所有即將要執行的代碼產生內存後不會被清除掉。先保留在內存裏面。 require "../DBDA.class.php";
require "../init.inc.php"; $db = new DBDA(); $sql = "select * from info"; $arr = $db->query($sql); $smarty->assign("shuju",$arr); $smarty->display("test.html"); //調用display方法來顯示模板文件 //這時候只要在括號內給出模板的路徑,模板就可以顯示了。 //上面代碼執行完成後會在內存裏面產生一個解析好的靜態頁面,這個靜態頁面即將輸出給瀏覽器來執行。 //在它輸出之前,把內存裏面的內容通過ob_get_contents();方法獲取出來
$str = ob_get_contents(); //獲取內存中的靜態頁面。 //file_put_contents();是指往文件裏面寫內容。 file_put_contents($filename,$str); //將獲取到的內容寫入到緩存文件 ob_flush();//輸出內存並且釋放。 相當於把把內存裏的文件清空了。 //執行第一次的時候,我把內容緩存下來。在執行第二次的時候,如果發現緩存文件存在的話,就直接調緩存文件過來用 //就可以了所以可以在上面加個判斷if,判斷緩存文件是否存在。 echo "#######################"; //如果頁面下方出現了一排#####################說明走的不是緩存文件。 //如果頁面下方沒有出現##########################說明走的是緩存文件。 }

靜態緩存