背景故事PHP性能(指令緩存/功能波動)
我維護所有使用大土生土長的PHP庫(基於Web)應用的頻譜。其中一些應用程序是由員工使用的傳統桌面應用程序,但另一些應用程序(這些問題也與此問題更相關)是隨着受歡迎程度不斷增加,性能變得越來越重要的PHP網站。
當前的PHP高速緩存方法
爲了加快我們的網站之一(這是一個商店,把它作爲thinkgeek.com),我使用memcached的緩存不經常需要作爲網站的某些部分動態構建(例如某個類別的產品列表)。
我們也使用APC的出廠默認安裝作爲OPCode緩存。
這兩種方法都可以顯着改善網站的性能,但我非常希望進一步走上優化之路。在PHP
從後臺數據庫即將自己
功能波動,我很喜歡怎樣的PostgreSQL例如,使用function volatility得到大規模的性能提升,同時保持可靠和準確的結果。
我的問題是,是否有PHP的擴展,允許開發人員將某些函數(或類方法)標記爲IMMUTABLE
?(意思是當給定相同的輸入參數時,該函數的結果總是相同的)。然後,這個緩存擴展可以緩存該函數的結果,這會在使用大型代碼庫時導致巨大的性能提升。
一個簡單的例子是,如SomeClass::getWebsiteFooter();
它返回一些HTML代碼,總是相同的,除非該網站已被改變(在這種情況下,高速緩存將被刷新)的方法。
是否有這樣的事情存在?我一直無法在市場上找到類似的東西。有沒有其他改進性能的方法可能有利於我的情況?
APC用戶緩存緩存? –
你正在尋找的技術名稱是memoize(這不是一個錯字,它沒有R)。你可以搜索「php memoize」,但是實現你自己的緩存版本要好得多(因爲它本質上就是這樣),因爲你必須以某種方式使緩存無效,正如Denis Ermolin所說 - 你可以緩存它APC。 –
@ N.B。謝謝!不知道術語memoize。你自己可能有一點要做,但由於它是一個相當大的框架,它會使代碼庫混亂很多,必須用幾行memcache查找/存儲代碼來包裝所有內容(即使它每次只有3行) 。能夠將方法標記爲不可變的主要優點(如:public immutable function foo();'),我認爲所有的魔法都可以通過擴展自動處理,而代碼庫不會混亂。 – Staex