簡介
PHP快取包括PHP編譯快取和PHP數據快取兩種。PHP是一種解釋型語言,屬於邊編譯邊運行的那種。這種運行模式的優點是程式修改很方便,但是運行效率卻很低下。PHP編譯快取針對這種情況做改進處理,使得PHP語言只要運行一次,就可以把程式的編譯結果快取起來。這樣,接下來的每次運行都不需要再次編譯了,這大大提高PHP運行速度。PHP數據快取運用於PHP實際開發之中針對數據處理進行快取,主要兩大方向為:針對資料庫數據進行快取和針對PHP模板數據進行快取。
PHP編譯快取
目前最常見的PHP編譯快取工具有:APC,Accelerator,xcache(國產)等。
PHP是一種解釋型語言,在PHP語言執行代碼的時候,需要下面兩步:
1、編譯過程。PHP讀取檔案,並編譯該檔案,然後生成能夠在Zend Engine虛擬機上執行的中間碼。
2、執行過程。PHP直接執行中間碼。
以下兩種情況,會導致PHP運行程式代碼效率低下:
1、即使PHP代碼檔案沒有發生改變,也會被PHP重新編譯。
2、如有引用檔案,PHP也要花費時間重新編譯這些被引用的檔案。
因此,需要PHP編譯快取工具對PHP程式的編譯結果做快取處理。這樣,PHP程式只要編譯一次,就不要重新再做無意義的編譯了。
PHP數據快取
PHP的數據快取包括針對資料庫數據進行快取和針對PHP模板數據進行快取。針對資料庫數據進行快取的工具有memcache等。針對PHP模板數據進行快取的工具主要有smarty等。
PHP快取類型
1、資料庫數據快取技術:
數據快取:這裡所說的數據快取是指資料庫查詢PHP快取機制,每次訪問頁面的時候,都會先檢測相應的快取數據是否存在,如果不存在,就連線資料庫,得到數據,並把查詢結果序列化後保存到檔案中,以後同樣的查詢結果就直接從快取表或檔案中獲得。
用的最廣的例子看Discuz的搜尋功能,把結果ID快取到一個表中,下次搜尋相同關鍵字時先搜尋快取表。和memcache技術。
舉個常用的方法,多表關聯的時候,把附表中的內容生成數組保存到主表的一個欄位中,需要的時候數組分解一下,這樣的好處是唯讀一個表,壞處就是兩個數據同步會多不少步驟,資料庫永遠是瓶頸,用硬碟換速度,是這個的關鍵點。
常用的資料庫數據快取技術有:
1.序列化(串列化)快取
2.JSON快取
3.XML快取
4.Array快取
2、頁面快取:
每次訪問頁面的時候,都會先檢測相應的快取頁面檔案是否存在,如果不存在,就連線資料庫,得到數據,顯示頁面並同時生成快取頁面檔案,這樣下次訪問的時候頁面檔案就發揮作用了。(模板引擎和網上常見的一些PHP快取機制類通常有此功能,例如smarty模板、thinkphp框架)
技術特點
1、時間觸發快取:
檢查檔案是否存在並且時間戳小於設定的過期時間,如果檔案修改的時間戳比當前時間戳減去過期時間戳大,那么就用快取,否則更新快取。
2、內容觸發快取:
當插入數據或更新數據時,強制更新PHP快取機制。
3、靜態快取:
這裡所說的靜態快取是指靜態化,直接生成HTML或XML等文本檔案,有更新的時候重生成一次,適合於不太變化的頁面,這就不說了。。