首頁  >  文章  >  後端開發  >  php緩存技術

php緩存技術

巴扎黑
巴扎黑原創
2016-11-24 11:55:14922瀏覽

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn