在php開發中,我們常常用到緩衝技術,以提高開發、運行效率。那php常用緩衝技術有哪些呢?它們是怎麼使用的呢?下面小編就為大家分享php學習中不得不掌握的10大緩衝技術,希望對php初學者有所協助。
1、全頁面靜態化緩衝
所謂全頁面靜態化緩衝,就是將頁面全部產生html靜態頁面,使用者訪問時直接存取的靜態頁面,而不會去走php伺服器解析的流程。此種方式,在CMS系統中比較常見,比如dedecms;
這種緩衝,比較常用的實現方式是輸出緩衝:
Ob_start()
******要啟動並執行代碼*******
$content = Ob_get_contents();
****將緩衝內容寫入html檔案*****
Ob_end_clean();
2、頁面部分緩衝
該種方式,是將一個頁面中不經常變的部分進行靜態緩衝,而經常變化的塊不緩衝,最後裝配在一起顯示;可以使用類似於ob_get_contents的方式實現,也可以利用類似ESI之類的頁面片段快取策略,使其用來做動態網頁面中相對靜態片段部分的緩衝。
3、資料緩衝
資料緩衝,顧名思義,就是快取資料的一種方式;比如,商城中的某個商品資訊,當用商品id去請求時,就會得出包括店鋪資訊、商品資訊等資料,此時就可以將這些資料緩衝到一個php檔案中,檔案名稱包含商品id來建一個唯一標識;下一次有人想查看這個商品時,首先就直接調這個檔案裡面的資訊,而不用再去資料庫查詢;其實快取檔案中緩衝的就是一個php數組之類。
4、查詢快取
查詢快取和資料緩衝類似,就是根據查詢語句來緩衝;將查詢得到的資料緩衝在一個檔案中,下次遇到相同的查詢時,就直接先從這個檔案裡面調資料,不會再去查資料庫;但此處的快取檔案名可能就需要以查詢語句為基點來建立唯一標識。
5、按時間變更進行緩衝
按時間變更進行緩衝,需要對於快取檔案設一個有效時間,在這個有效時間內,相同的訪問才會先取快取檔案的內容,但是超過設定的緩衝時間,就需要重新從資料庫中擷取資料,並生產最新的快取檔案。
6、按內容變更進行緩衝
按內容變更進行緩衝,就是當資料庫內容被修改時,即刻更新快取檔案;比如,一個流量很大的商城,商品很多,商品表必然比較大,這表的壓力也比較重,我們就可以對商品顯示頁進行頁面緩衝;當商家在後台修改這個商品的資訊時,點擊儲存,我們同時就更新快取檔案;那麼,買家訪問這個商品資訊時,實際上訪問的是一個靜態頁面,而不需要再去訪問資料庫,以減輕伺服器壓力。
7、記憶體式緩衝
提到這個緩衝,可能大家最先想到的就是Memcached;memcached是高效能的分布式記憶體快取服務器。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、 提高可擴充性。它就是將需要緩衝的資訊,緩衝到系統記憶體中,需要擷取資訊時,直接到記憶體中取;比較常用的方式就是 key?>value方式:
$memcachehost = '192.168.6.191';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect($memcachehost,$memcacheport) or die ("Couldnot connect");
$memcache->set('key','緩衝的內容');
$get = $memcache->get($key); //擷取資訊
?>
8、apache緩衝模組
PHP環境搭建中,一般都是使用的apache伺服器,當apache安裝完以後,是不允許被cache的。如果外接了cache或squid伺服器要求進行web加速的話,就需要在htttpd.conf裡進行設定,當然前提是在安裝apache的時候要啟用mod_cache的模組。
安裝apache時:./configure ?enable-cache ?enable-disk-cache ?enable-mem-cache
9、php APC緩衝擴充
細心的程式猿,可能會發現在Php有一個APC緩衝擴充,windows下面為php_apc.dll,需要先載入這個模組,然後是在php.ini裡面進行配置:
[apc]
extension=php_apc.dll
apc.rfc1867 = on
upload_max_filesize = 100M
post_max_size = 100M
apc.max_file_size = 200M
upload_max_filesize = 1000M
post_max_size = 1000M
max_execution_time = 600 ; 每個PHP頁面啟動並執行最大時間值(秒),預設30秒
max_input_time = 600 ; 每個PHP頁面接收資料所需的最大時間,預設60
memory_limit = 128M ; 每個PHP頁面所吃掉的最大記憶體,預設8M
10、Opcode緩衝
php的執行流程可以用下面這張圖來展示:
首先php代碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php檔案,第一次運行時可以緩衝其Opcode碼,下次再執行這個頁面時,直接會去找到緩衝下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。
以上即是php開發中不得不知的10大緩衝技術的全部內容,可能php中還有一些其他的緩衝技術沒總結到裡面,也希望大家補充分享。
相關閱讀:《一名優秀程式員應該有的7大條件》