前言:
在開發MooPHP的過程中,為了尋找更有效率的快取方式,測試了兩種最常用的快取方式。
PHP常用快取方式:
第一種,把需要快取的資料處理,形成PHP可以直接執行的檔案。在需要快取資料的時候,透過include方式引入,並使用。
第二種,把需要的資料經過serialize函數序列化後直接儲存到檔案。在需要使用快取資料的時候,透過反序列化讀入檔案內容並複製給需要的變量,然後使用。
測試結果:
透過測試我們發現,第二種也就是serialize快取資料的方式更有效率。 (數據略去,最後提供了文章地址下載,大家可以自行測試)
原因分析:
include方式讀取快取的時候,PHP需要執行幾個過程
1.讀取文件
2.解析所Include的文件
3.執行,給變數賦值
而serialize序列化方式讀取快取的時候:
1.讀取數據
2.反序列化資料內容
3.給變數賦值
從以上內容比較的話,可能是由於解析PHP檔案內的陣列所需的時間超過unserialize反序列化陣列的時間。如果你有興趣可以看看《PHP filesystem相關函數與include require的效能效率研究》:http: //www.ccvita.com/163.html
測試檔程式碼:
下載位址:MooPHP-CacheTest.zip
原始網址: http ://www.ccvita.com/311.html有新的研究心得會在這裡更新。
CacheTest_IncludeFile.php
CacheTest_SerializeFile.php
總結分析:
第一種,include快取的方式優點:增加資料的保密性,和安全性,快取內容不會被外界發現。
缺點:速度相對較慢。
用途:保存禁止系統外部得知的數據,例如web系統的設置,甚至MySQL資訊等的保存第二種,serialize序列化快取的方式優點:速度較快。
缺點:快取系統檔案路徑一點曝光,快取內容會外洩。
用途:快取最新文章,相關文章等不擔心外部得知的資料的時候,可以使用這種方式。
備註:
當裝了ea、apc等PHP記憶體快取之後,第一種透過include讀取快取的方式速度會高於第二種serialize序列化快取的方式。所以在MooPHP框架中,我們對於非敏感資訊採用第二種方式快取;敏感資訊採用第一種方式快取。有關MooPHP的介紹可以參考《MooPHP框架簡介》這篇文章(網址: http://www.ccvita.com/295.html )