php學習不得不掌握的10大緩衝技術

來源:互聯網
上載者:User
在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大條件》

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.