php緩存技術的應用時至關廣泛的,也許有些人還對這項技術不太瞭解,咱們如今就爲你們詳細的介紹一下PHP緩存技術的相關應用技巧。php
在大部份狀況下咱們的網站都會使用數據庫做爲站點數據存儲的容器。當你執行一個SQL查詢時,典型的處理過程是:鏈接數據庫->準備SQL查 詢->發送查詢到數據庫->取得數據庫返回結果->關閉數據庫鏈接。但數據庫中有些數據是徹底靜態的或不太常常變更的,緩存系統會經過 把SQL查詢的結果緩存到一個更快的存儲系統中存儲,從而避免頻繁操做數據庫而很大程度上提升了程序執行時間,並且緩存查詢結果也容許你後期處理。數據庫
1、PHP緩存技術之數據緩存:緩存
這裏所說的數據緩存是指數據庫查詢緩存,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,若是不存在,就鏈接數據庫,獲得數據,並把查詢結 果序列化後保存到文件
中,之後一樣的查詢結果就直接從緩存文件中得到。分佈式
2、PHP緩存技術之頁面緩存:ide
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,若是不存在,就鏈接數據庫,獲得數據,顯示頁面並同時生成緩存頁面文件,這樣下次訪問 的時候頁面文件就發揮做用了。(模板引擎和網上常見的一些緩存類一般有此功能)性能
3、PHP緩存技術以內存緩存:網站
在裏就不介紹了,不是本文所要討論的,只簡單提一下:對象
Memcached是高性能的,分佈式的內存對象緩存系統,用於在動態應用中減小數據庫負載,提高訪問速度。模板引擎
dbcached 是一款基於 Memcached 和 NMDB 的分佈式 key-value 數據庫內存緩存系統。內存
以上的緩存技術雖然能很好的解決頻繁查詢數據庫的問題,但其缺點在在於數據無時效性,下面我給出我在項目中經常使用的方法:
4、PHP緩存技術之時間觸發緩存:
檢查文件是否存在而且時間戳小於設置的過時時間,若是文件修改的時間戳比當前時間戳減去過時時間戳大,那麼就用緩存,不然更新緩存。
設定時間內不去判斷數據是否要更新,過了設定時間再更新緩存。以上只適合對時效性要求不高的狀況下使用,不然請看下面。
5、PHP緩存技術以內容觸發緩存:
當插入數據或更新數據時,強制更新緩存。
在這裏咱們能夠看到,當有大量數據頻繁須要更新時,最後都要涉及磁盤讀寫操做。怎麼解決呢?我在平常項目中,一般並不緩存全部內容,而是緩存一部分 不常常變的內容來解決。但在大負荷的狀況下,最好要用共享內存作緩存系統。
到這裏PHP緩存也許有點解決方案了,但其缺點是,由於每次請求仍然要通過PHP解析,在大負荷的狀況下效率問題仍是比效嚴重,在這種狀況下,也許 會用到靜態緩存。
6、PHP緩存技術之靜態緩存
這裏所說的靜態緩存是指HTML緩存,HTML緩存通常是無需判斷數據是否要更新的,由於一般在使用HTML的場合通常是不常常變更內容的頁面。數 據更新的時候把HTML也強制更新一下就能夠了。