PHP緩衝技術

來源:互聯網
上載者:User

標籤:

為什麼要用緩衝?

    緩衝技術是提升系統效能最有效辦法。從作業系統的臨時交換區,到CPU的一二級緩衝,再到硬碟顯卡,緩衝技術幾乎無處不在。具體到web應用上,從你在瀏覽器地址欄裡鍵入地址並敲下斷行符號開始,到頁面呈現在你面前,這一次網路請求,沿途各處都用到了緩衝技術。DNS,路由器,負載平衡裝置,代理緩衝,web伺服器,瀏覽器等都以各種不同的形式在利用緩衝技術。

緩衝的作用

    緩衝作為一種儲存介質,儲存上一次耗時計算的結果,當下一次相同的請求到來時,直接返回儲存的結果,不用再勞駕後端伺服器做一次重複勞動。這樣一來,後端伺服器的壓力減輕了,自然能提供更多的服務,這是典型的用空間換時間的做法。

緩衝的特性

    有效期間是緩衝的必要屬性,當過了有效期間後,緩衝失效,重新計算結果並緩衝,進入下一個時效周期。

    緩衝內容有變化時,需主動刪除緩衝。

PHP緩衝技術

    從大的方向來說,PHP緩衝可分為編譯類緩衝、資料類緩衝、基於反向 Proxy的web緩衝和頁面靜態化

  • 編譯類緩衝

        常用到的編譯緩衝工具有Apc,Accelerator,Xcache等,其原理是將指令碼編譯產生的opcode予以儲存,如果指令檔沒有修改,下次不用重新編譯(當然具體行為與配置有關)。

        對於Apc來說,在php.ini中,將apc.ttl設定為0,則表示緩衝條目永不逾時,這意味著緩衝區滿後,將無法緩衝新條目,官方建議值為7200~86400。apc.stat選項表示是否啟用指令碼更新檢查。預設值1表示apc每次請求指令檔時都會檢查指令碼是否被更新,如果更新則重新編譯並緩衝,這樣做對效能有影響。如果設定為0,表示不檢查指令碼是否更新,這樣能大幅提高效能,但是假如指令檔更新了,則需要重啟web伺服器或者fcgi進程,預設值為1。

        Apc的這種用法稱之為‘系統緩衝’,還有一種用法稱為‘使用者資料緩衝’,使用方式類似memcached,在此不再展開。

  • 資料類緩衝

        此類緩衝,主要指對變數、資料庫查詢結果等的緩衝。實現方式可以有多種,比如以資源id為鍵,或者以查詢語句為鍵來儲存,承載快取資料的載體則通常是memcached,redis和檔案等。

  • 基於反向 Proxy的web緩衝

        如Nginx的proxy_cache和fastcgi_cache,Apache2的mod_proxy和mod_cache,以及Squid和Varnish。嚴格來說,這並不屬於PHP緩衝,但是鑒於和PHP結合比較緊密,權且歸到一處來。

        以Nginx舉例,其有兩種緩衝機制,proxy_cache和fastcgi_cache,兩者的區別:

        proxy_cache作用是緩衝後端伺服器的內容,可能是任何內容,包括靜態和動態。
        fastcgi_cache作用是緩衝fastcgi產生的內容,很多情況是php產生的動態內容。

        proxy_cache緩衝減少了nginx與後端通訊的次數,節省了傳輸時間和後端頻寬。
        fastcgi_cache緩衝減少了nginx與php的通訊次數,更減輕了php和資料庫的壓力。

  • 頁面靜態化

        也可稱之為頁面緩衝,可分為全頁面緩衝和頁面靜態片段快取。主要用到的技術為輸出控制。

        

ob_start();******要啟動並執行代碼*******$content = ob_get_contents();****將緩衝內容寫入html檔案*****file_put_contents(‘abc.html‘,$content);ob_end_clean();

        這樣使用者直接存取abc.html即可。頁面靜態片段快取與此類似,可以用ob實現,也可以用ESI實現。還有一種情況,頁面的大部分內容是靜態,但是有一小部分內容是動態,這怎麼辦呢。這種情況我們把它歸屬於動態緩衝技術,我們下次再講。

 

PHP緩衝技術

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.