怎麼用php語言來作文件緩存

使用緩存可以讓咱們的程序訪問起來更加快速,緩存能夠減小對數據庫的操做,體驗起來更好一些,對服務器的壓力也小一些,固然服務速度很快
php文件執行完以後產生的解析完的數據,保存成靜態的網頁,下次打開的這個文件的時候,若是發現以前執行過了,就能夠把以前保存的靜態網頁拿出來顯示了
它也有個缺點,就是不能時時的與數據庫同步
適用範圍,通常的小程序均可以用緩存,對時間要求特別苛刻的,好比搶購什麼的就不能使用緩存文件了
寫緩存文件,
同樣要有php文件
php文件仍是放在main目錄下
相對應的html文件仍是寫在對應的文件夾下
先把數據庫的一系列數據輸出一下
php文件中
Query($sql); $smarty->assign("shuzu",$arr); $smarty->display("huancun.html");
html文件中無標題文檔
數據列表
<{foreach $shuzu as $v}> <{/foreach}>
代號
名稱
操做
<{$v[0]}>
<{$v[1]}>
運行後數據就顯示出來了php

所謂的緩存,並非把咱們寫的這些代碼存下來,審查一下它的源代碼html

而是把這些保存下來,變成一個靜態的,當刷新的時候,直接把已經保存下來的數據直接顯示出來,就再也不從新訪問數據庫了,這樣節省了不少時間,那若是數據庫裏面的數據有所變更的話,再走緩存文件就不能把新的數據及時反饋出來了
上面的代碼是沒有寫緩存操做的樣子,下面再來作一下緩存操做
html文件中不用修改
Query($sql); $smarty->assign("shuzu",$arr); $smarty->display("huancun.html"); $str = ob_get_content; //獲取內存中的緩存內容 file_put_contents($filename,$str); ob_flush; //關閉內存緩存 echo "#########################"; }
這個一開始運行確定沒有緩存,因此會輸出最後的一串井號,再次刷新時就有緩存了,因此直接運行上面的代碼,下面的代碼就不走了
運行一下,看看效果sql

再來看一下cache文件夾裏面有沒有huancun.html文件數據庫

而後點開看一下小程序

以靜態的方式保存了這張表格
再刷新一下那張表格緩存

刷新後表格下面的一串井號消失了
再刷新後也沒有井號
因此走的是緩存文件
咱們從數據庫改個數據看看效果服務器

改了第一個漢族
而後再刷新一下表格spa

數據並無改變
說明緩存文件已經有了,再刷新就只走緩存文件了
再把這個緩存改進一下,只需改php文件就能夠htm

給它加上有效期,每隔十秒從新緩存一次,這樣就不會出現數據庫改變,數據刷新不出來的結果了內存

刷新後井號消失

十秒後刷新,原來的緩存文件過時,就會從新緩存一遍,井號就又會出現

這樣就是靜態緩存的一種方法
分頁的話也可使用
=time)) { //直接調用緩存 include($filename); } else { //從新緩存 ob_start; //開啓內存緩存 include("../init.inc.php"); include("../DBDA.php"); $db = new DBDA; $sall = "select count(*) from nation"; $zts = $db->StrQuery($sall); include("../page.class.php"); $page = new Page($zts,5); $sql = " select * from nation ".$page->limit; $arr = $db->Query($sql); $smarty->assign("fpage",$page->fpage); $smarty->assign("shuzu",$arr); $smarty->display("huancun.html"); $str = ob_get_contents; //獲取內存中的緩存內容 file_put_contents($filename,$str); ob_flush; //關閉內存緩存 echo "#########################"; }
html文件中,只須要輸出個分頁就行了
而後運行

再點擊第二頁

第三頁四頁均可以點擊
看一下cache目錄下的文件

每一個分頁的內容都被保存下來了
30秒內刷新走的都是緩存文件
不管分多少頁均可以

     本文選自熱飯論壇

相關文章
相關標籤/搜索