首頁  >  文章  >  必須get的幾大php快取技術

必須get的幾大php快取技術

小云云
小云云原創
2017-11-04 16:45:431600瀏覽

1、全頁面靜態化快取

也就是將頁面全部產生html靜態頁面,使用者造訪時直接造訪的靜態頁面,而不會去走php伺服器解析的流程。此種方式,在CMS系統中比較常見,例如dedecms;

一種比較常用的實作方式是用輸出快取:

Ob_start()

*** ***要執行的程式碼*******

$content = Ob_get_contents();

#****將快取內容寫入html檔*****

Ob_end_clean();

2、頁面部分緩存

#該種方式,是將一個頁面中不常變的部分進行靜態緩存,而經常變化的塊不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的緩存(ESI技術,請baidu,此處不詳講)。

該種方式可以用於如商城中的商品頁;

3、資料快取

顧名思義,就是快取資料的一種方式;比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去數據庫查詢;其實緩存文件中緩存的就是一個php數組之類;

Ecmall商城系統裡面就用了這種方式;

4、查詢快取

其實這跟資料快取是一個思路,就是根據查詢語句來快取;將查詢得到的資料快取在一個檔案中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不會再去查資料庫;但此處的快取檔名可能就需要以查詢語句為基點來建立唯一標示;

按時間變更進行快取

其實,這一條不是真正的快取方式;上面的2、3、4的快取技術一般都用到了時間變更判斷;就是對於快取檔案您需要設一個有效時間,在這個有效時間內,相同的訪問才會先取緩存文件的內容,但是超過設定的緩存時間,就需要重新從數據庫中獲取數據,並生產最新的緩存文件;比如,我將我們商城的首頁就是設定2小時更新一次;

5、依內容變更進行快取

這個也並非獨立的快取技術,需結合著用;就是當資料庫內容被修改時,即時更新快取檔案;

例如,一個人流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重;我們就可以對商品顯示頁進行頁面快取;

當商家在後台修改這個商品的資訊時,點擊保存,我們同時就更新快取檔案;那麼,買家訪問這個商品資訊時,實際上訪問的是一個靜態頁面,而不需要再去訪問資料庫;

試想,如果對商品頁不緩存,那麼每次訪問一個商品就要去資料庫查一次,如果有10萬人在線上瀏覽商品,那伺服器壓力就大了;

#6.記憶體快取

提到這個,可能大家想到的首先就是Memcached;memcached是高效能的分散式記憶體快取伺服器。 一般的使用目的是,透過快取資料庫查詢結果,減少資料庫存取次數,以提高動態Web應用的速度、 提高可擴充性。

它就是將需要快取的信息,快取到系統記憶體中,需要取得資訊時,直接到記憶體取;比較常用的方式就是key–>value方式;

$ memcachehost = '192.168.6.191';

$memcacheport = 11211;

$memcachelife = 60;

$memcache = new Memcache;

##$meache

##$memcache = new Memcache;

##$meache ->connect($memcachehost,$memcacheport) 或 die ("Could not connect");

$memcache->set('key','快取的內容');

#$get = $memcache->get($key); //取得資訊

##?>

 


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn