PHP緩衝技術的使用說明

來源:互聯網
上載者:User

在大部份情況下我們的網站都會使用資料庫作為網站資料存放區的容器。當你執行一個SQL查詢時,典型的處理過程是:串連資料庫->準備 SQL查詢->發送查詢到資料庫->取得資料庫返回結果->關閉資料庫連接。但資料庫中有些資料是完全靜態或不太經常變動的,緩衝系統會通過把SQL查詢的結果緩衝到一個更快的儲存系統中儲存,從而避免頻繁操作資料庫而很大程度上提高了程式執行時間,而且緩衝查詢結果也允許你後期處理。

普遍使用的PHP緩衝技術

  PHP緩衝技術之資料緩衝:

  這裡所說的資料緩衝是指資料庫查詢快取,每次訪問頁面的時候,都會先檢測相應的快取資料是否存在,如果不存在,就串連資料庫,得到資料,並把查詢結果序列化後儲存到檔案中,以後同樣的查詢結果就直接從快取檔案中獲得。

  PHP緩衝技術之頁面緩衝:

  每次訪問頁面的時候,都會先檢測相應的快取頁面面檔案是否存在,如果不存在,就串連資料庫,得到資料,顯示頁面並同時產生快取頁面面檔案,這樣下次訪問的時候分頁檔就發揮作用了。(模板引擎和網上常見的一些緩衝類通常有此功能)

  PHP緩衝技術之記憶體緩衝:

  在裡就不介紹了,不是本文所要討論的,只簡單提一下:

  Memcached是高效能的,分布式的記憶體對象緩衝系統,用於在Live App中減少資料庫負載,提升訪問速度。

  dbcached 是一款基於 Memcached 和 NMDB 的分布式 key-value 資料庫記憶體緩衝系統。

  以上的緩衝技術雖然能很好的解決頻繁查詢資料庫的問題,但其缺點在在於資料無時效性,下面我給出我在項目中常用的方法:

  PHP緩衝技術之時間觸發緩衝:

  檢查檔案是否存在並且時間戳記小於設定的到期時間,如果檔案修改的時間戳記比目前時間戳減去到期時間戳記大,那麼就用緩衝,否則更新緩衝。

  設定時間內不去判斷資料是否要更新,過了設定時間再更新緩衝。以上只適合對時效性要求不高的情況下使用,否則請看下面。

  PHP緩衝技術之內容觸發緩衝:

  當插入資料或更新資料時,強制更新緩衝。

  在這裡我們可以看到,當有大量資料頻繁需要更新時,最後都要涉及磁碟讀寫操作。怎麼解決呢?我在日常項目中,通常並不緩衝所有內容,而是緩衝一部分不經常變的內容來解決。但在大負荷的情況下,最好要用共用記憶體做緩衝系統。

  到這裡PHP緩衝也許有點解決方案了,但其缺點是,因為每次請求仍然要經過PHP解析,在大負荷的情況下效率問題還是比效嚴重,在這種情況下,也許會用到靜態緩衝。

  PHP緩衝技術之靜態緩衝

  這裡所說的靜態緩衝是指HTML緩衝,HTML緩衝一般是無需判斷資料是否要更新的,因為通常在使用HTML的場合一般是不經常變動內容的頁面。資料更新的時候把HTML也強制更新一下就可以了。

相關文章

聯繫我們

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