PHP快取技術的應用時相當普遍的,也許有些人也對這項技術不太了解,我們現在就為大家詳細的介紹一下PHP快取技術的相關應用技巧。
幾款主流PHP框架的優缺點評比總結PHP程式碼轉義的相關方法
PHP取整函數的具體使用方法介紹
PHP外部變數的具體意義解析
PHP開發高效能WEB系統的技巧講解在大部份情況下我們的網站都會使用資料庫作為網站資料儲存的容器。當你執行一個SQL查詢時,典型的處理過程是:連接資料庫->準備SQL查詢->傳送查詢到資料庫->取得資料庫回傳結果->關閉資料庫連線。但資料庫中有些資料是完全靜態的或不太經常變動的,快取系統會透過把SQL查詢的結果快取到一個更快的儲存系統中存儲,從而避免頻繁操作資料庫而很大程度上提高了程式執行時間,而且快取查詢結果也允許你後製。
普遍使用的PHP快取技術
PHP快取技術之資料快取:
這裡所說的資料快取是指資料庫查詢緩存,每次造訪頁面的時候,都會先偵測相應的快取資料是否存在,如果不存在,就連接資料庫,得到數據,並把查詢結果序列化後儲存到文件中,以後同樣的查詢結果就直接從快取文件中取得。
PHP緩存技術之頁面緩存:
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接數據庫,得到數據,顯示頁面並同時生成緩存頁面文件,這樣下次訪問的時候頁面文件就發揮作用了。 (模板引擎和網路上常見的一些快取類別通常有此功能)
PHP快取技術之記憶體快取:
在裡就不介紹了,不是本文要討論的,只簡單提:
Memcached是高效能的,分散式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提升存取速度。
dbcached 是一款基於Memcached 和NMDB 的分散式key-value 資料庫記憶體快取系統。
以上的快取技術雖然能很好的解決頻繁查詢資料庫的問題,但其缺點在於資料無時效性,以下我給出我在專案中常用的方法:
PHP快取技術之時間觸發快取:
檢查檔案是否存在且時間戳小於設定的過期時間,如果檔案修改的時間戳比當前時間戳減去過期時間戳大,那麼就用緩存,否則更新快取。
設定時間內不去判斷資料是否要更新,過了設定時間再更新快取。以上只適合在時效性要求不高的情況下使用,否則請看下面。
PHP快取技術之內容觸發快取:
當插入資料或更新資料時,強制更新快取。
在這裡我們可以看到,當有大量資料頻繁需要更新時,最後都要涉及磁碟讀寫操作。怎麼解決呢?我在日常專案中,通常不會快取所有內容,而是快取一部分不常變的內容來解決。但在大負載的情況下,最好要用共享記憶體做快取系統。
到這裡PHP快取也許有點解決方案了,但其缺點是,因為每次請求仍然要經過PHP解析,在大負載的情況下效率問題還是比效嚴重,在這種情況下,也許會用到靜態緩存。
PHP快取技術之靜態緩存
這裡所說的靜態緩存是指HTML緩存,HTML緩存一般是無需判斷資料是否要更新的,因為通常在使用HTML的場合一般是不常變動內容的頁面。資料更新的時候把HTML也強制更新一下就可以了。